本程序为几种控件的综合使用,编写应用程序其主窗口如图所示,标题为Application of SelectBox。在这个窗口中,包含有三个标题分别为Check Box,Radio Box和Combo

课本例9-8。

!!!声明:这个实验结果本人并未作出,编译没有错但是不能运行,只给大家展示一下操作过程。望谅解。

本程序为几种控件的综合使用,编写应用程序其主窗口如图所示,标题为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 按钮。
单击此按钮,退出应用程序。
在这里插入图片描述

  1. 新建MFC项目,并选择基于对话框

新建MFC程序
选择基于对话框

  1. 点击资源视图-MFCApplication1(这是项目的名字,每个人不一样,记好自己的即可)-MFCApplication1.rc*-Dialog-IDD_MFCApplication1_DLALOG
    在工具箱(可在视图中打开)的对话框编辑器里选择相应控件(基本在红色框内)添加到对话框,用蓝色框内工具进行快速调整(如对齐等)

在这里插入图片描述

3.最终图如下图所示。需要注意的是带圆圈的控件必须按下图顺序添加,否则后果我也不清楚
在这里插入图片描述
4.由下表(9-34)进行各控件属性设置
在这里插入图片描述在这里插入图片描述
5.以Date复选框为例子 ,点击控件,在属性中找到Caption和ID按照上图进行修改

  • !!!28个控件每个都要添加,我为了节约时间只加了一个作为示范
    在这里插入图片描述

在这里插入图片描述
6.由表(表9-35)在控件上右键-添加变量
同样以Date(IDC_DATE_CHECK)为例在这里插入图片描述

根据变量类型在类别中选择值或者控件

在这里插入图片描述

7.由下表(表9-36)添加消息处理方法

  • 同样以Date复选框(IDC_DATE_CHECK)为例

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
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();
}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值