MFC界面编程基础(12):组框、单选按钮和复选框

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_17017545/article/details/85229087
上一篇:MFC界面编程基础(11):静态文本框、命令按钮和编辑框 下一篇:MFC界面编程基础(13):列表框和组合框

组框、单选按钮和复选框都是对话框的常见控件。组框与静态文本框一样是CStatic类的对象,单选按钮和复选框与命令按钮一样都是CButton类的对象。

组框

当对话框上控件较多时,可以使用组框将一组相关的控件框起来,达到标识一组控件的作用。组框不需要连接变量,也不需要处理消息。组框的重要属性有:

  • ID :所有组框的缺省 ID 都是 IDC_STATIC ,不需要重新设置。
  • 标题:该属性决定组框上的标题文本。

单选按钮

  • 注意事项
    同一组中的按钮必须一个接一个地放进对话框中,中间不能插入其他控件,并且一个组的第一个按扭的“Group”属性需要设置为True,表示一组控件的开始。
  • 重要属性
    ①:ID :每个命令按钮都有一个缺省 ID ,如 IDC_RADIO1 ,可以重新设置。
    ②:标题:该属性值就是单选按钮右边显示的文本标题。
    ③:Group :一组中第一个按钮选中该属性,表示它是一组的开始。
  • 消息
    单选按钮能处理的消息是BN_CLICKED。
  • 重要函数
  • 设定单选按钮选中状态
    初始时,可使用 Windows API 函数 CheckRadioButton() 设定一组单选按钮中选中的按钮。 形式:
void CheckRadioButton(int nIDFirstButton, int nIDLastButton, int nIDCheckButton);

说明:
①:nIDFirstButton 是一组中第一个单选按钮的 ID ;
②:nIDLastButton 是一组中最后一个单选按钮的 ID ;
③:nIDCheckButton 为初始时设置为选中的那个单选按钮的 ID 。

  • 判定单选按钮是否被选定
    函数原型如下:
UINT IsDlgButtonChecked( int nIDButton ) const; 

说明:如果 ID 为 nIDButton 的按钮被选定,则该函数的返回值为 true ,否则为 false 。

【例】

设计一个如图所示的程序。当单击“ 确定 ”后,用 MessageBox 函数显示一个如图所示的消息框。
在这里插入图片描述

  • 分组
    例:将radio1、radio2分为1组,radio3、radio4、radio5分为另一组;
    分组方法:
    第一组:

  • 设置 radio1 的属性:group设置为true.

  • 设置 radio2 的属性: group设为false
    第二组:

  • 设置 radio3 的属性:group设置为true

  • 设置 radio4 的属性:group设为false

  • 设置 radio5 的属性:group设为false
    按CTRL+D,保证同一组内的radio的tab序号是连续的;
    在这里插入图片描述

  • 界面设计
    首先创建一个对话框程序框架,然后放置各控件,进行属性设置,将编辑框连接到 CString 类型的 m_edit 变量,其余控件不需要连接变量。将“男”和“教授”对应的单选钮的Group属性勾上。

  • 初始化
    单选按钮的初始化工作在对话框的初始化函数实现。

BOOL CTESTDlg::OnInitDialog() 
{ 
	 ┆ 
  CheckRadioButton(IDC_RADIO1, IDC_RADIO2, IDC_RADIO1); //
  CheckRadioButton(IDC_RADIO3, IDC_RADIO5, IDC_RADIO4); 
    ┆ 
}; 
  • 消息处理函数
void CTESTDlg::OnButton1() 
{ 
 // TODO: Add your control notification handler code here 
	//将控件中的数据更新到变量中
	UpdateData(TRUE);
	CString s;
	s += m_edit;
	if (IsDlgButtonChecked(IDC_RADIO1))
	{
		s += " 男 ";
	}
	else if (IsDlgButtonChecked(IDC_RADIO2))
	{
		s += " 女 ";
	}
	if (IsDlgButtonChecked(IDC_RADIO3))
	{
		s += " 教授 ";
	}
	else if (IsDlgButtonChecked(IDC_RADIO4))
	{
		s += " 副教授 ";
	}
	else
	{
		s += " 讲师 ";
	}
	MessageBox(s);  
}

复选框

  • 重要属性
  • ID :每个复选框都有一个缺省 ID ,如 IDC_CHECK1 ,可以重新设置。
  • 标题:该属性值决定了复选框右边显示的文本标题。
  • 连接变量
    复选框通常被连接到Value类别BOOL类型的变量。
  • 消息
    复选框能处理 BN_CLICKED 消息。

【例】

设计一个如图所示的程序。当单击“确定”后,在右边的编辑框中显示有关信息。
在这里插入图片描述

  • 界面设计
    首先创建一个对话框程序框架,然后放置各控件,进行属性设计,各编辑框和复选框按表连接变量,其余控件不需要连接变量。
    在这里插入图片描述
  • 消息处理函数
void CTESTDlg::OnButton1() 
{ 
// TODO: Add your control notification handler code here 
UpdateData(TRUE);
CString s;
s = m_e1;
s += " 爱好 :\r\n";
if (m_c1) s += "  旅游\r\n";
if (m_c2) s += "  运动\r\n";
if (m_c3) s += "  音乐\r\n";
m_e2 = s;
UpdateData(FALSE);
}

对话框是 Windows 应用程序中最常用的一种与用户交互的方式。用户通过对话框输入数据,程序通过对话框显示执行的情况。

【例】

设计如图所示的对话框。若选定了“日期”或“时间”复选框,则在对应的只读编辑框中显示系统当前日期或时间。
在这里插入图片描述

分析: CTime 是 MFC 中的一个类,封装了日期和时间。它有一个静态成员 GetCurrentTime() ,返回系统当前的日期和时间。
实现:

  • 界面设计
    首先创建一个对话框程序框架,然后放置各控件,按表进行属性设置和连接变量。
    在这里插入图片描述

  • 消息处理函数

………………………………………………………… 
void CTESTDlg::OnCheck1() 
{ 
// TODO: Add your control notification handler code here 
	UpdateData(TRUE); 
	if(m_k1==TRUE) 
	{ 
		CTime time=Ctime::GetCurrentTime(); // 构造“ YYYY.MM.DD ”形式的日期字符串
		m_e1=time.Format("%Y.%m.%d"); 
	} 
	else 
		m_e1=""; 
	UpdateData(FALSE); 
} 
…………………………………………………………
void CTESTDlg::OnCheck2() 
{ 
// TODO: Add your control notification handler code here 
	UpdateData(TRUE); 
	if(m_k2==TRUE) 
	{ 
		CTime time=Ctime::GetCurrentTime(); // 构造“ HH:MM:SS ”形式的时间字符串 
		m_e2=time.Format("%H:%M:%S");     
	} 
	else 
		m_e2=""; 
	UpdateData(FALSE); 
} 
…………………………………………………………
上一篇:MFC界面编程基础(11):静态文本框、命令按钮和编辑框 下一篇:MFC界面编程基础(13):列表框和组合框

猜你喜欢

转载自blog.csdn.net/qq_17017545/article/details/85229087