对话框编程上机实验_第1页
对话框编程上机实验_第2页
对话框编程上机实验_第3页
对话框编程上机实验_第4页
对话框编程上机实验_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Visual C+游戏程序设计 菜单编程一、上机目的:(1)掌握7种方法对编辑框进行操作。(2)掌握对话框伸缩功能的实现。(3)掌握用MSDN查找相关API函数。二、上机内容:以下题目都在VC+6.0环境下编程完成。1、新建一个MFC的单文档工程Mybole,并增加一个菜单选项“对话框”。插入一个对话框资源对应的对话框名称是:IDD_DIALOG1。在MFC中,对资源的操作通常都是通过一个与资源相关的类来完成的。在新建对话框资源上双击,弹出对话框,选择“Create a new class”选项。这时在Mybole程序的Class View选项卡中,可以看到新类,这个CTestDlg新类有两个

2、成员函数,其中一个就是它的构造函数,定义代码如下:CTestDlg:CTestDlg(CWnd* pParent /*=NULL*/): CDialog(CTestDlg:IDD, pParent)/AFX_DATA_INIT(CTestDlg)/AFX_DATA_INITCTestDlg类的构造函数首先调用其基类:CDialog的构造函数,并传递两个参数:一个是CTestDlg类的IDD成员,一个是父窗口指针,打开CTestDlg类的头文件,就可以发现这个IDD就是这个对话框资源的ID,代码如下:/ Dialog Data/AFX_DATA(CTestDlg)enum IDD = IDD_D

3、IALOG1 ;/AFX_DATACtestDlg类的另一个函数是:DoDataExchange,主要用来完成对话框数据的交换和校验。了解API函数:我们创建一个模态对话框:void CMyboleView:OnDialog() / TODO: Add your command handler code here CTestDlg dlg;dlg.DoModal(); /创建模态对话框我们在IDD_DIALOG1上设计如下界面:实现加法运算,用7种方法实现:第一种方法:查找MSDN理解GetWindowText函数、SetWindowText函数、itoa函数和atoi函数。第二种方法:查找G

4、etDlgItemText函数和SetDlgItemText函数。写出代码实现之。第三种方法:查找GetDlgItemInt函数和SetDlgItemInt函数。写出代码实现之。第四种方法:将三个编辑框控件和三个变量相关联。用同样方法添加m_num1、m_num2和m_num3。这时候我们观察这个类的头文件和构造函数。/ Dialog Data/AFX_DATA(CTestDlg)enum IDD = IDD_DIALOG1 ;intm_num1;intm_num2;intm_num3;/AFX_DATACTestDlg:CTestDlg(CWnd* pParent /*=NULL*/): C

5、Dialog(CTestDlg:IDD, pParent)/AFX_DATA_INIT(CTestDlg)m_num1 = 0;m_num2 = 0;m_num3 = 0;/AFX_DATA_INIT这时DoDataExchange函数变为:void CTestDlg:DoDataExchange(CDataExchange* pDX)CDialog:DoDataExchange(pDX);/AFX_DATA_MAP(CTestDlg)DDX_Text(pDX, IDC_EDIT1, m_num1);DDX_Text(pDX, IDC_EDIT2, m_num2);DDX_Text(pDX,

6、IDC_EDIT3, m_num3);/AFX_DATA_MAP我们编写代码如下:void CTestDlg:OnBtnAdd() UpdateData(true); m_num3=m_num1+m_num2;UpdateData(false);请回答为什么加上UpdateData(true);和UpdateData(false);两个语句呢?第五种方法:我们把编辑框控件再与三个变量相关联。/ Dialog Data/AFX_DATA(CTestDlg)enum IDD = IDD_DIALOG1 ;CEditm_edit3;CEditm_edit2;CEditm_edit1;/AFX_DAT

7、A这时在CTestDlg类的DoDataExchange函数中增加了三个DDX_Control函数,分别将一个对话框控件与一个控件变量相关联。代码如下:接下来大家自己调用CEdit类的对象成员函数GetWindowText函数和SetWindowText函数实现加法运算。第6种方法我们可以通过发送消息WM_GETTEXT消息。查找MSDN理解。对应的代码如下:第7种方法:采用编辑框控件消息:EM_SETSEL查找MSDN理解:CWnd:SendDlgItemMessageLRESULT SendDlgItemMessage( int nID, UINT message, WPARAM wPar

8、am = 0, LPARAM lParam = 0 );Return ValueSpecifies the value returned by the controls window procedure, or 0 if the control was not found.ParametersnIDSpecifies the identifier of the dialog control that will receive the message.messageSpecifies the message to be sent.wParamSpecifies additional messag

9、e-dependent information. lParamSpecifies additional message-dependent information.RemarksSends a message to a control. 对应实现的代码如下:void CTestDlg:OnBtnAdd() / TODO: Add your control notification handler code here int num1,num2,num3;char ch110,ch210,ch310;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);SendDlgItemMe

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论