您好,欢迎访问三七文档
1VisualC++游戏程序设计菜单编程一、上机目的:(1)掌握7种方法对编辑框进行操作。(2)掌握对话框伸缩功能的实现。(3)掌握用MSDN查找相关API函数。二、上机内容:以下题目都在VC++6.0环境下编程完成。1、新建一个MFC的单文档工程Mybole,并增加一个菜单选项“对话框”。插入一个对话框资源对应的对话框名称是:IDD_DIALOG1。在MFC中,对资源的操作通常都是通过一个与资源相关的类来完成的。在新建对话框资源上双击,弹出对话框,选择“Createanewclass”选项。这时在Mybole程序的ClassView选项卡中,可以看到新类,这个CTestDlg新类有两个成员函数,其中一个就是它的构造函数,定义代码如下:CTestDlg::CTestDlg(CWnd*pParent/*=NULL*/):CDialog(CTestDlg::IDD,pParent){//{{AFX_DATA_INIT(CTestDlg)//}}AFX_DATA_INIT}CTestDlg类的构造函数首先调用其基类:CDialog的构造函数,并传递两个参数:一个是CTestDlg类的IDD成员,一个是父窗口指针,打开CTestDlg类的头文件,就可以发现这个IDD就是这个对话框资源的ID,代码如下:2//DialogData//{{AFX_DATA(CTestDlg)enum{IDD=IDD_DIALOG1};//}}AFX_DATACtestDlg类的另一个函数是:DoDataExchange,主要用来完成对话框数据的交换和校验。了解API函数:我们创建一个模态对话框:voidCMyboleView::OnDialog(){//TODO:Addyourcommandhandlercodehere3CTestDlgdlg;dlg.DoModal();//创建模态对话框}我们在IDD_DIALOG1上设计如下界面:实现加法运算,用7种方法实现:第一种方法:查找MSDN理解GetWindowText函数、SetWindowText函数、itoa函数和atoi函数。第二种方法:查找GetDlgItemText函数和SetDlgItemText函数。写出代码实现之。第三种方法:查找GetDlgItemInt函数和SetDlgItemInt函数。写出代码实现之。第四种方法:将三个编辑框控件和三个变量相关联。4用同样方法添加m_num1、m_num2和m_num3。这时候我们观察这个类的头文件和构造函数。//DialogData//{{AFX_DATA(CTestDlg)enum{IDD=IDD_DIALOG1};intm_num1;intm_num2;intm_num3;//}}AFX_DATACTestDlg::CTestDlg(CWnd*pParent/*=NULL*/):CDialog(CTestDlg::IDD,pParent){//{{AFX_DATA_INIT(CTestDlg)m_num1=0;m_num2=0;m_num3=0;//}}AFX_DATA_INIT}这时DoDataExchange函数变为:voidCTestDlg::DoDataExchange(CDataExchange*pDX){CDialog::DoDataExchange(pDX);//{{AFX_DATA_MAP(CTestDlg)5DDX_Text(pDX,IDC_EDIT1,m_num1);DDX_Text(pDX,IDC_EDIT2,m_num2);DDX_Text(pDX,IDC_EDIT3,m_num3);//}}AFX_DATA_MAP}我们编写代码如下:voidCTestDlg::OnBtnAdd(){UpdateData(true);m_num3=m_num1+m_num2;UpdateData(false);}请回答为什么加上UpdateData(true);和UpdateData(false);两个语句呢?第五种方法:我们把编辑框控件再与三个变量相关联。//DialogData//{{AFX_DATA(CTestDlg)enum{IDD=IDD_DIALOG1};CEditm_edit3;CEditm_edit2;CEditm_edit1;//}}AFX_DATA这时在CTestDlg类的DoDataExchange函数中增加了三个DDX_Control函数,分别将一个对话框控件与一个控件变量相关联。代码如下:接下来大家自己调用CEdit类的对象成员函数GetWindowText函数和SetWindowText函数实现加法运算。第6种方法我们可以通过发送消息WM_GETTEXT消息。查找MSDN理解。6对应的代码如下:第7种方法:采用编辑框控件消息:EM_SETSEL查找MSDN理解:CWnd::SendDlgItemMessageLRESULTSendDlgItemMessage(intnID,UINTmessage,WPARAMwParam=0,LPARAMlParam=0);ReturnValueSpecifiesthevaluereturnedbythecontrol’swindowprocedure,or0ifthecontrolwasnotfound.7ParametersnIDSpecifiestheidentifierofthedialogcontrolthatwillreceivethemessage.messageSpecifiesthemessagetobesent.wParamSpecifiesadditionalmessage-dependentinformation.lParamSpecifiesadditionalmessage-dependentinformation.RemarksSendsamessagetoacontrol.对应实现的代码如下:voidCTestDlg::OnBtnAdd(){//TODO:Addyourcontrolnotificationhandlercodehereintnum1,num2,num3;charch1[10],ch2[10],ch3[10];SendDlgItemMessage(IDC_EDIT1,WM_GETTEXT,10,(LPARAM)ch1);SendDlgItemMessage(IDC_EDIT2,WM_GETTEXT,10,(LPARAM)ch2);num1=atoi(ch1);num2=atoi(ch2);num3=num1+num2;itoa(num3,ch3,10);SendDlgItemMessage(IDC_EDIT3,WM_SETTEXT,0,(LPARAM)ch3);}2、对话框伸缩8请大家实现之,并理解里面的代码和查找相关的MSDN函数,给出汉子解释API函数。三、上机心得主要写感想,这次上机过程的情况。包括遇到的难点,和上机的运行情况和同学们交流情况。(至少写6行文字以上)
三七文档所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
本文标题:对话框编程上机实验
链接地址:https://www.777doc.com/doc-7037503 .html