MFC对话框学习 心得.doc_第1页
MFC对话框学习 心得.doc_第2页
MFC对话框学习 心得.doc_第3页
MFC对话框学习 心得.doc_第4页
MFC对话框学习 心得.doc_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

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

文档简介

计算机图形学 交互式程序设计心得Mfc对话框学习对于无模式对话框接收的输入信息,我们可以以向父窗口发送消息的方式进行。下面以Vc+6.0来用实例来说明无模式对话框的使用。1、 建立mfc appwizard(exe)工程,用AppWizard生成一个单文档应用程序,取名dream 确定-选择单文档-完成即可。2、 点ResoucreView中的Dialog,右击-插入-选中对话框-新建,创建一个如图所示的对话框资源,选中对话框,右击-属性,将对话框命名为IDD_DREAM。并依次给对话框资源添加控件。关闭对话框,为对话框添加控件。编辑框、按钮、静态文本等通过点击控件的属性来,修改其标题和ID值。3、 启动MFC ClassWizard添加一个新类,右击对话框-建立类向导-确定:如图将类命名为cdtestdream,然后点击确定,即可!4.用MFC ClassWizard为新建类CDtestdlmy的编辑控件添加对应的成员变量,如图。双击你要添加变量的ID号,然后设置变量名和变量类型。点击确定!4、在头文件dtestdream.h中为类Cdtestdream添加成员变量CWnd *m_pParent;在dtestdream.cpp中为构造函数时添加如下黑体部分Cdtestdream:Cdtestdream(CWnd* pParent /*=NULL*/): CDialog(Cdtestdream:IDD, pParent)/AFX_DATA_INIT(Cdtestdream)m_x = 0;m_y = 0;/AFX_DATA_INITASSERT(pParent);m_pParent=pParent; /保存父窗口指针5、用MFC ClassWizard为新建类CDtestdream的按钮控件添加对应的成员函数,如图。在dtestdream里面会加入相应的函数:修改此函数:void Cdtestdream:OnMuice() / TODO: Add your control notification handler code herefloat FV_i; FV_i=1; /不同按钮返回不同值,让其父窗口可以识别是哪个按钮按下 UpdateData(true); /强制数据交换,以更新控件对应的变量值 m_pParent-SendMessage(WM_DLG_CREATE,(WPARAM)FV_i);/向父窗口发送消息WM_DLG_CREATE,并传送FV_i6、在头文件dtestdream.h中添加自定义消息#define WM_DLG_CREATEWM_USER+ 0X34至此,对于新加进类dtestdream的处理已完成,下面处理调用Cdtestdream的CdreamlView类。7、在ResoucreView中的双击Menu资源IDR_MAINFRAME,添加菜单“对话框测试”,ID为ID_EDIT_TEST,如图所示。8、在头文件dreamView.h中为CtestdlView类添加成员变量并引入头文件#include dreamView.hCdtestdream* testdlmy;黄色区域要符合自己的类名!int x,y;在CTestdlView:CTestdlView()构造函数中添加如下代码:CTestdlView:CTestdlView()/ TODO: add construction code heretestdlmy=new Cdtestdream(this);x=0;y=0;9、利用类向导CdreamView类添加响应ID_EDIT_TEST的函数CDreamView:OnEditTest。如图所示在函数中添加如下代码:void CDreamView:OnEditTest() / TODO: Add your command handler code heretestdlmy-Create(IDD_DREAM,NULL); /创建无模式对话框,黄色区域名字要根据工程名修改! testdlmy-ShowWindow(SW_SHOW); /显示无模式对话框到此时,程序运行就可以显示对话框了,运行结果如图所示:但还没有添加对应动作,下面添加响应动作。9、手动为CdreamView类添加消息响应函数在头文件dreamView.h中添加afx_msg void OnDlgNotifyMsg(WPARAM wP);在dreamView.cpp的消息响应表中添加黑体部分IMPLEMENT_DYNCREATE(CDreamView, CView)BEGIN_MESSAGE_MAP(CDreamView, CView)/AFX_MSG_MAP(CDreamView)ON_COMMAND(ID_EDIT_TEST, OnEditTest)/AFX_MSG_MAP/ Standard printing commandsON_COMMAND(ID_FILE_PRINT, CView:OnFilePrint)ON_COMMAND(ID_FILE_PRINT_DIRECT, CView:OnFilePrint)ON_COMMAND(ID_FILE_PRINT_PREVIEW, CView:OnFilePrintPreview)ON_MESSAGE(WM_DLG_CREATE,OnDlgNotifyMsg) /当接收到WM_DLG_CREATE消息时,执行函数OnDlgNotifyMsgEND_MESSAGE_MAP()为OnDlgNotifyMsg添加如下代码:void CDreamView:OnDlgNotifyMsg(WPARAM wP) if(float)wP=1.0) /加法按钮按下 x=testdlmy-m_x;y=testdlmy-m_y; else if(float)wP=2.0) /减法按钮按下 x=testdlmy-m_x;y=testdlmy-m_y; Invalidate(true); /强制重画客户区 10、重载CTestdlView:OnDraw(CDC* pDC)函数,加入代码如下:void CDreamView:OnDraw(CDC* pDC)CDreamDoc* pDoc = GetDocument();ASSERT_VALID(pDoc);/ TODO: add draw code for native data herepDC-TextOut(10,20,减法:);pDC-TextOut(10,40,加法:);char buff10;float s,d;s=x-y;d=x+y;s

温馨提示

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

评论

0/150

提交评论