网站大量收购独家精品文档,联系QQ:2885784924

第5讲 对话框与控件.ppt

  1. 1、本文档共66页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第5讲 对话框与控件

第5讲 对话框与控件 对话框 对话框是一种资源,使用时要用一个CDialog类的派生类与它相关联 CDialog类是CWnd类的派生类,所以对话框是一个窗口 CDialog类封装了对话框常用操作的功能函数 对话框是窗口的集合,上面放置各种控件 控件(如按钮、编辑框等) 控件所对应的类是CWnd类的派生类 控件是对话框窗口的子窗口 对话框控件 控件可以向它的父窗口(通常是对话框)发送WM_COMMAND消息,称为“通知消息” 为区分是何种通知消息,每个通知消息还有一个通知码 父窗口可以响应也可以忽略这一消息,若要响应,则进行消息映射,并编写消息处理函数 通知消息的消息处理函数的函数名可以由编程者命名 每种控件有自己的一组通知码,是16位整数 当控件上某个事件发生,则产生相应通知码的消息 控件的通知码是由系统设定的,所以控件可以产生哪些消息也是系统设定 每类控件的通知码有惟一的前缀 对话框种类 模式对话框 对话框弹出后,只能进行对话框操作,不能进行其他窗口的操作,直到本对话框被关闭 无模式对话框 对话框弹出后,可以进行其他窗口的操作(可以与其他窗口切换操作) 两种对话框的界面和编程基本相同,但创建和结束方式不同 对话框与其他类之间传递信息 模式对话框 对话框关闭后才能进入其他窗口操作,把数据存储后,关闭对话框,再进入其他窗口操作 非模式对话框 在知道了其他类对象的地址后,即可对其他对象操作 可以向其他类对象发送自定义消息,接收消息的对象可对数据进行操作 模式对话框创建和使用 步骤 用对话框编辑器设计对话框(包括上面的控件) 为对话框关联一个类(利用类向导) 在相应打开对话框的类里面声明一个对话框类对象 调用对话框对象的DoModal()成员函数来创建对话框,关闭对话框后对话框对象自动销毁 CMyDlg dlg; dlg.DoModal( ); 可以根据DoModal()函数的返回值判断对话框关闭方式 IDOK 表示按“确定”按钮(ID是IDOK)关闭 IDCANCEL表示按“取消”按钮(ID是IDCANCEL )关闭 【例5-1】 建立口令对话框 步骤: 创建一个单文档工程 Password 添加对话框资源,设置属性(标题为“登录”) 添加控件,并设置属性(Password) 建立一个与对话框关联的类(CPasswordDlg) 为CPasswordDlg类添加一个与编辑框关联的变量 设计一个弹出对话框的方式(在某个类中调用CPasswordDlg 类的DoModal( )函数) 注意:在该类中应包含对话框类的.h文件类 例如: 程序一运行就弹出(在应用程序类的InitInstance函数中弹出) 在视图类中弹出(例如鼠标右键单击弹出) 弹出对话框的代码 void CPasswordView::OnPassword() { // TODO: Add your command handler code here CPasswordDLG dlg; if (dlg.DoModal()==IDOK) Invalidate(); } void CPasswordView::OnPassword() { // TODO: Add your command handler code here CPasswordDLG dlg; if (dlg.DoModal()==IDOK){ if(dlg.m_password == 123456) AfxMessageBox(口令正确!); else AfxMessageBox(口令错误!); } Invalidate(); } 非模式对话框创建和使用 (按窗口创建方式) 用Create函数创建 调用ShowWindow函数显示对话框 CMyDlg *pDlg; //声明对话框类指针 pDlg=new CMyDlg ; //动态创建对象 pDlg-Create(对话框ID, this); //创建对话框 pDlg-ShowWindow(SW_SHOW); //显示对话框 … //其他操作 delete pDlg; //释放内存空间(对话框销毁) 非模式对话框创建和使用 实际应用中 往往在需要打开对话框的类(例如视图类)中声明一个指向对话框的指针(把CMyDlg *pDlg; 声明为成员变量) 在该类的析构函数中释放存储空间( delete pDlg; ) 在对话框类的构造函数初始化时,把该类(例如视图类)对象的地址交由对话框类保存 从而使得非模式对话框可以与它的父类(例如视图类)交换信息 进而可以再通过视图类与文档类交换信息 对话框的初始化 对

文档评论(0)

5500046 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档