实验名称MFC基本控件的使用
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1、实验名称:MFC基本控件的使用
2、实验目的:掌握编辑框类及其方法,熟练掌握利用编辑框类开发基于MFC的应用
程序的方法。
3、实验内容:使用MFC AppWizard创建如图一所示的基于对话窗的应用程序,实现算
术加、减、乘和除运算。
图一
4、程序实现方法:
(1)使用AppWizard建立应用程序框架
①在进入Visual C++ 6.0的第一个界面下,选择MFC AppWizard(exe),在Project name 文本输入框中输入新建的项目名称“计数器”,并设置其所在位置,单击OK按钮,如图二所示。
图二Visual C++ 6.0的第一个界面
②在MFC AppWizard的第一步中选择基本对话,如图三所示,其余的都采用默认选项。
图三MFC AppWizard的第一步界面
这样就建立了一个基于对话框的程序,如图四所示。
图四基于对话框的界面
(2)利用资源编辑器建立对话框
在图四的Resource View选项卡中打开Dialog资源组,本程序的工程文件名为计数器,因此,系统自动产生一个名为IDD_MY_DIALOG的资源文件,双击IDD_ MY_DIALOG,在右边的窗口中显示出待编辑的对话框。根据如图一所示的样式,利用Visual C++ 6.0的控键(Controls)建立对话框。
下面以“数据1”编辑框和“+”按钮为例介绍控件的创建过程,其他编辑框和按钮的创建可参照此操作:
①在图四中Controls的“编辑框”按钮上单击鼠标左键、在如图一所示的对话框编辑窗口上的“数据1”编辑框的位置上,按下鼠标左键,并拖动鼠标画出一个大小合适的编辑框。在编辑框上单击鼠标右键,在弹出的快捷莱单中选择Properties选项,此时弹出Edit Properties 属性设置对话框,如图五所示,在该对话框中输入ID属性。
图五Edit Properties对话框
②在图四中Controls的“按钮”按钮上单击鼠标左键,在图一的“+”按钮的位置上,按下鼠标左键并拖动鼠标画出一个大小合适的下压式按钮。在按钮上单击鼠标右键,在弹出的快捷菜单中选择Properties项,此时也弹出Push Button Properties对话框,如图六所示,在该对话框中输入控件的ID值和Caption属住。
图六Push Button Properties对话框
按照上面的操作过程编辑其他按钮和编辑框等对象的属性。
对象ID Caption或说明
编辑框IDC_ITEM1_EDIT 计算数据1
编辑框IDC_ITEM2_EDIT 计算数据2
编辑框IDC_RESULT_EDIT 计算结果
按钮IDC_ADD_BUTTON +
按钮IDC_DIFFERENCE_BUTTON -
按钮IDC_MULTIPLY_BUTTON *
按钮IDC_DEVIDE_BUTTON /
按钮IDC_CLEAR_BUTTON Clear(清除)
按钮IDC_EXIT_BUTTON Exit(退出)
静态文本IDC_STATIC 数据1
静态文本IDC_STATIC 数据2
静态文本IDC_STATIC 结果
(3)添加代码
①给编辑框连接变量:在“数据l”编辑框上单击鼠标右键,在图四所示的快捷菜单中选择ClassWizard菜单项,弹出MFC ClassWizard对话框,选择Member Variables选项卡,如图七所示。在Control IDs列表框中选中IDC_ITEM1_EDIT,单击Add Variables按钮,在弹出的对话框中(如图八所示)连接变量m_Item1_Edit。按照上面的操作过程给另两个编辑框加入变量,如下所示:
图七MFC ClassWizard对话框中Member Variables选项卡
图八编辑框连接变量对话框
ID 变量变量类型
IDC_ITEM1_EDIT m_Item1_Edit CEdit
IDC_ITEM2_EDIT m_Item2_Edit CEdit
IDC_RESULT_EDIT m_Result_Edit Cstring
②给“+”按钮连接代码:在“+”按钮上单击鼠标右键,选择ClassWizard菜单项,在弹出的对话框中选择Messages Maps选项卡,在Object IDs列表框中选择IDC_ADD_BUTTON,在Messages 列表框中选择BN_CLICKED项,即选择单击按钮事件,如图九所示。
图九“+”按钮连接代码对话框
单击右边的Add Function按钮,在弹出的对话框中接受默认的名字。单击Edit Code 按钮,此时显示源代码文件,在函数OnAddButton()函数中输入下列代码:void CMyDlg::OnAddButton()
{
// TODO: Add your control notification handler code here
char cstrItem1[10],cstrItem2[10]; //变量定义。
double dfItem1,dfItem2,dfResult;
char cBuffer[50];
m_Item1_Edit.GetWindowText(cstrItem1,10);
m_Item2_Edit.GetWindowText(cstrItem2,10);
dfItem1=atof((LPCTSTR)cstrItem1);
dfItem2=atof((LPCTSTR)cstrItem2);
dfResult=dfItem1+dfItem2; //加法实现。
_gcvt(dfResult,10,cBuffer);
m_Result_Edit=(LPCTSTR)cBuffer;
UpdateData(FALSE);
}
定义两个字符串cstrltern1和cstrltem2,调用函数GetWindowText()将编辑框中的内容存储到这两个变量中。调用函数atof将字符串转换为浮点数。数据1和数据2相加后放入dfResult,然后调用函数_gcvt将结果转化为字符串存储在cBuffer中,最后调用函数UpdateData (FALSE)将窗口中所有编辑框的内容更新。
③同样可以给“-”、“*”和“/”按钮连接代码,不同的是消息映像函数中执行减、乘和除的操作。
“-”的操作代码如下:
void CMyDlg::OnDifferenceButton()
{
// TODO: Add your control notification handler code here
char cstrItem1[10],cstrItem2[10]; //变量定义。
double dfItem1,dfItem2,dfResult;
char cBuffer[50];
m_Item1_Edit.GetWindowText(cstrItem1,10);
m_Item2_Edit.GetWindowText(cstrItem2,10);
dfItem1=atof((LPCTSTR)cstrItem1);
dfItem2=atof((LPCTSTR)cstrItem2);
dfResult=dfItem1-dfItem2; //减法实现。
_gcvt(dfResult,10,cBuffer);
m_Result_Edit=(LPCTSTR)cBuffer;
UpdateData(FALSE);
}
“*”的操作代码如下:
void CMyDlg::OnMultiplyButton()
{
// TODO: Add your control notification handler code here