!!!声明:这个实验结果本人并未作出,编译没有错但是不能运行,只给大家展示一下操作过程。望谅解。
本程序为几种控件的综合使用,编写应用程序其主窗口如图所示,标题为Application of SelectBox。在这个窗口中,包含有三个标题分别为Check Box,Radio Box和Combo Box的组合框,在Check Box组合框中包含有两个复选框data和time,以及Enable、Disable、Show Control和Hide Control四个按钮;在Radio Box组合框中,含有两个自组合框、一个按钮和一个编辑框,子组合框名字分别为Sex Select和Age Range,它们分别包含了一组单选按钮,此外还有一个名字为Show Sex and Age的按钮。在Combo Box组合框中,有一组Course的单选按钮组、一个名字为Record的下拉列表框、一个Show_Combo按钮和一个编辑框。
本例的功能如下。
(1) Check Box 组合框中的控件。
• Date 复选框: 单击Date 复选框,在其下面的编辑框中显示当前的日期,并在复选
框中显示选中标志。
• tim e 复选框: 单击T i me 复选框,在其下面的编辑框中显示当前的系统时间,并在
复选框中显示选中标志。
• disabl e 按钮: 单击Disable 按钮上面两个复选框变成无效,不响应操作,并且复选
框和编辑框都变灰。
• En a ble 按钮:单击Enabl e 按钮,复选框又变成有效,可对其进行操作。
• Hide the C lock Setting 按钮:单击几d e 按钮,隐藏掉复选框和编辑框,使它们不
可见。
• Show Again 按钮:重新显示被隐藏的复选框和编辑框。
(2) Radio Box 组合框中的控件。
• Sex Selecting 子组合框: 在此子组合框中有boy 和girl 单选按钮,单击其中的任
何一项进行性别的选择。
• Age Range 子组合框:在此框中进行年龄段的选择。
• Show the Sex and Age 按钮:单击此命令按钮,在其下面的编辑框中显示一行信
息,报告当前单选按钮的状态。
(3) Combo Box 组合框中的控件。
• Course 子组合框:在此子组合框中有Eng li sh 、Computer 和Nature 三门课的选
项,单击其中的任何一项进行课程科目的选择。
• Record 下拉列表框:在此框中进行成绩的选择。
• Show_Combo 按钮:单击此命令按钮,在其下面的编辑框中显示一行信息,报告
当前单选按钮及下拉列表框的状态。
(4) Exit 按钮。
单击此按钮,退出应用程序。
3.最终图如下图所示。需要注意的是带圆圈的控件必须按下图顺序添加,否则后果我也不清楚
4.由下表(9-34)进行各控件属性设置
5.以Date复选框为例子 ,点击控件,在属性中找到Caption和ID按照上图进行修改
6.由表(表9-35)在控件上右键-添加变量
同样以Date(IDC_DATE_CHECK)为例
根据变量类型在类别中选择值或者控件
7.由下表(表9-36)添加消息处理方法
8.由表(表9-36)给消息函数方法添加具体实现代码
同样以Date复选框为例子
双击Date复选框,
9.添加的代码如下
UpdateData(TRUE);
if (m_DateCheck == TRUE)
{
CTime tNow;
tNow = CTime::GetCurrentTime();
CString sNow = tNow.Format("% y. %m. % d");
m_DateEdit.SetSel(0, -1);
m_DateEdit.ReplaceSel(sNow);
}
else
{
m_DateEdit.SetSel(0, -1);
m_DateEdit.ReplaceSel(L"");
}
UpdateData(FALSE);
10.其他8个函数的代码如下(时间仓促,手打代码可能出现个别错误)
void CMFCApplication1Dlg::OnBnClickedDateCheck()
{
// TODO: 在此添加控件通知处理程序代码
UpdateData(TRUE);
if (m_DateCheck == TRUE)
{
CTime tNow;
tNow = CTime::GetCurrentTime();
CString sNow = tNow.Format("% y. %m. % d");
m_DateEdit.SetSel(0, -1);
m_DateEdit.ReplaceSel(sNow);
}
else
{
m_DateEdit.SetSel(0, -1);
m_DateEdit.ReplaceSel(L"");
}
UpdateData(FALSE);
}
void CMFCApplication1Dlg::OnBnClickedTimeCheck()
{
// TODO: 在此添加控件通知处理程序代码
UpdateData(TRUE);
if (m_TimeCheck==TRUE)
{
CTime tNow;
tNow = CTime::GetCurrentTime();
CString sNow = tNow.Format(" %I : %M: %S ");
m_TimeEdit.SetSel(0, -1);
m_TimeEdit.ReplaceSel(sNow);
}
else
{
m_TimeEdit.SetSel(0, -1);
m_TimeEdit.ReplaceSel(L"");
}
UpdateData(FALSE);
}
``
void CMFCApplication1Dlg::OnBnClickedEnableButton()
{
// TODO: 在此添加控件通知处理程序代码
GetDlgItem(IDC_DATE_CHECK) -> EnableWindow(TRUE);
GetDlgItem(IDC_TIME_CHECK) -> EnableWindow(TRUE);
m_DateEdit.EnableWindow(TRUE);
m_TimeEdit.EnableWindow(TRUE);
}
void CMFCApplication1Dlg::OnBnClickedDisableButton()
{
// TODO: 在此添加控件通知处理程序代码
GetDlgItem(IDC_DATE_CHECK) ->EnableWindow(FALSE);
GetDlgItem(IDC_TIME_CHECK)-> EnableWindow(FALSE);
m_DateEdit.EnableWindow(FALSE);
m_TimeEdit.EnableWindow(FALSE);
}
void CMFCApplication1Dlg::OnBnClickedShowButton()
{
// TODO: 在此添加控件通知处理程序代码
GetDlgItem(IDC_DATE_CHECK) -> EnableWindow(SW_SHOW);
GetDlgItem(IDC_TIME_CHECK) -> EnableWindow(SW_SHOW);
GetDlgItem(IDC_DATE_EDIT)->EnableWindow(SW_SHOW);
m_DateEdit.ShowWindow(SW_SHOW);
GetDlgItem(IDC_TIME_EDIT)->EnableWindow(SW_SHOW);
m_TimeEdit.ShowWindow(SW_SHOW);
}
void CMFCApplication1Dlg::OnBnClickedHideButton()
{
// TODO: 在此添加控件通知处理程序代码
GetDlgItem(IDC_DATE_CHECK) -> EnableWindow(SW_HIDE);
GetDlgItem(IDC_TIME_CHECK) ->EnableWindow(SW_HIDE);
m_DateEdit.ShowWindow(SW_HIDE);
m_TimeEdit.ShowWindow(SW_HIDE);
}
void CMFCApplication1Dlg::OnBnClickedShowSexAgeButton()
{
// TODO: 在此添加控件通知处理程序代码
TCHAR sEdit[50];
int iSexRADIO;
int iAgeRADIO;
iSexRADIO = GetCheckedRadioButton(IDC_Boy_RADIO, IDC_Girl_RADIO);
if(iSexRADIO == IDC_Boy_RADIO)
_tcscpy(sEdit, L"The boy ' s age is ");
if (iSexRADIO == IDC_Girl_RADIO)
_tcscpy(sEdit, L"The girl ' s age is");
iAgeRADIO = GetCheckedRadioButton(IDC_Age1_RADIO, IDC_Age3_RADIO);
if (iAgeRADIO ==IDC_Age1_RADIO)
_tcscat(sEdit, L" great than 20");
if (iAgeRADIO == IDC_Age2_RADIO)
_tcscat(sEdit, L" between 15 and 20 ");
if (iAgeRADIO == IDC_Age3_RADIO)
_tcscat(sEdit, L" less than 15");
m_ResultEdit.SetSel(0, -1);
m_ResultEdit.ReplaceSel(sEdit);
}
void CMFCApplication1Dlg::OnBnClickedShowComboButton()
{
// TODO: 在此添加控件通知处理程序代码
UpdateData(TRUE);
TCHAR sCourseEdit[30];
TCHAR sRecordEdit[15];
int iCourseRadio;
iCourseRadio = GetCheckedRadioButton(IDC_ENGLISH_RADIO, IDC_NATURE_RADIO);
if(iCourseRadio == IDC_ENGLISH_RADIO)
_tcscpy(sCourseEdit, L"English record is ");
if(iCourseRadio == IDC_COMPUTER_RADIO)
_tcscpy(sCourseEdit, L"Computer record is ");
if(iCourseRadio == IDC_NATURE_RADIO)
_tcscpy(sCourseEdit, L"Natural record is ");
m_Record.GetWindowText(sRecordEdit, 15);
_tcscat(sCourseEdit, L"");
_tcscat(sCourseEdit, sRecordEdit);
m_ComboEdit = sCourseEdit;
UpdateData(FALSE);
}
void CMFCApplication1Dlg::OnBnClickedExitButton()
{// TODO : Add your control notification handler code here
OnOK();
}