上一篇: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):列表框和组合框 |
---|