当前位置:文档之家› 实验名称MFC基本控件的使用

实验名称MFC基本控件的使用

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 CEditIDC_ITEM2_EDIT m_Item2_Edit CEditIDC_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 herechar 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 herechar 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 herechar 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::OnDevideButton(){// TODO: Add your control notification handler code herechar 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);}④给“Clear”按钮连接代码:利用ClassWizard将按钮消息BN_CLICKED加到函数OnClearButton中,加入下列代码:void CMyDlg::OnClearButton(){// TODO: Add your control notification handler code herem_Item1_Edit.SetSel(0,-1);m_Item1_Edit.ReplaceSel(" ");m_Item2_Edit.SetSel(0,-1);m_Item2_Edit.ReplaceSel(" ");m_Result_Edit=" "; //编辑框清空实现。

UpdateData(FALSE);}⑤同理,利用ClassWizard给“Exit”按钮连接下列代码:void CMyDlg::OnExitButton(){// TODO: Add your control notification handler code hereOnOK(); //退出。

}最后编译运行此项目,即可以实现加、减、乘和除运算5、程序说明:(1)、三个编辑框,用来输入操作数和输出计算结果。

相关主题