当前位置: 首页 > news >正文

抚顺做网站的公司荆门市网站建设

抚顺做网站的公司,荆门市网站建设,株洲市住房和城乡建设局网站,开发网站步骤【转载】MFC非模态对话框实例 2012-06-17 16:21:41| 分类#xff1a; C/MFC | 标签#xff1a; |字号大中小 订阅 实例目的 在Windows环境中#xff0c;对话框是一种常用的输入输出手段。对话框有两种类型#xff0c;非模态和模态。非模态对话框与模态对话框不同 C/MFC |  标签 |字号大中小 订阅 实例目的 在Windows环境中对话框是一种常用的输入输出手段。对话框有两种类型非模态和模态。非模态对话框与模态对话框不同在非模态对话框活动的同时用户还可以在应用程序的其他地方工作而模态对话框在其关闭之前用户不能在同一个应用程序的其他地方工作。本例将从主框架窗口创建一个简单的非模态对话框在该对话框关闭之前用户可以在主框架窗口中的其他地方工作比如选择“打开”文件等。 实现方法 非模态对话框的创建比较复杂。下面介绍具体的方法 首先创建一个新的对话框资源并新建一个类与之关联用AppWizard 其次调用CDialog的默认构造函数来构造对话框对象注意创建的不是窗口这一步在主框架窗口的构造函数中实现。 再次调用CDialog::Create成员函数创建窗口Create把资源ID作为参数并且在对话框窗口仍然在屏幕上显示时就立刻返回控件。 最后在关闭非模态对话框时注意要调用DestroyWindow函数而不是CloseWindow。删除的只是对话框窗口对话框对象并未删除留待创建新的窗口。在程序退出时再删除该对话框对象。这个过程中对话框与主窗口之间消息的传递必须由用户实现自定义消息映射在代码的第10步详细说明。 在编程过程中必须准确了解何时构造对话框对象何时创建对话框窗口何时删除对话框。 程序代码 1  利用AppWizard生成一个名为ShowModelessDialog的SDI工程其他步骤均采用VC的默认配置取消Print And PrintView的选定。 2  使用对话框编辑器创建对话框资源。从Insert菜单选择Resource然后选定Dialog。改变对话框标题为Modeless Dialog。添加一个静态文本控件和一个编辑控件。静态文本控件标题可以任意指定本例指定为“Password”。 3  使用ClassWizard创建CModelessDialog类该类与刚才创建的资源相关联。添加消息处理函数OnCancel和OnOK代码如下 void CModelessDialog::OnCancel()  { if(m_pView ! NULL) { //非模式对话框不调用基类CDialog的OnCancel函数 //发送用户定义的消息WM_GOODBYE m_pView-PostMessage(WM_GOODBYE, IDCANCEL); } else { //模态对话框直接调用基类的OnConcel函数 CDialog::OnCancel(); } } void CModelessDialog::OnOK()  { if(m_pView ! NULL) { //非模式对话框不调用基类CDialog的OnOK函数 UpdateData(TRUE); m_pView-PostMessage(WM_GOODBYE, IDOK); } else { //模态对话框直接调用基类的OnOK函数 CDialog::OnOK(); } } 4  为CModelessDialog类增加如下成员变量和构造函数原型 private: CView *m_pView; //指向调用此对话框的视类对象的指针 Public: CModelessDialog(CView *pView); //保留原有的构造函数从而可以兼容模态对话框 BOOL Create(); 5  在CModelessDialog.h中定义WM_GOODBYE消息的ID #define WM_GOODBYE WM_USER5 6  在CModelessDialog.cpp中增加非模态的构造函数和Create函数 CModelessDialog::CModelessDialog(CView *pView) { //非模态对话框的构造函数m_pView不为空 m_pView  pView; } BOOL CModelessDialog::Create() { return CDialog::Create(CModelessDialog::IDD); } 7  在CShowModelessDialogView.h中添加一个指向非模态对话框的指针 private: CModelessDialog *m_pDlg; 8  在CShowModelessDialogView.cpp中修改构造函数和析构函数。构造函数在堆上构造对话框对象并且最终由视图析构函数删除它 CShowModelessDialogView::CShowModelessDialogView() { // TODO: add construction code here //在堆中生成CModelessDialog对象 m_pDlg  new CModelessDialog(this); } CShowModelessDialogView::~CShowModelessDialogView() { //删除对话框对象释放堆空间 delete m_pDlg; } 9  在CShowModelessDialogView.cpp中添加代码到虚函数OnDraw中提示用户按下选择“演示 - 非模态对话框”来进行演示并添加头文件的包含语句 #include “ModelessDialog.h” void CShowModelessDialogView::OnDraw(CDC* pDC) { // TODO: add draw code for native data here pDC-TextOut(0, 0, 请选择 演示 - 非模态对话框 进行演示); } 10  为WM_GOODBYE增加自己的消息代码。因为ClassWizard不支持用户定义的消息所以我们必须自己编写代码。 在CShowModelessDialogView.cpp中BEGIN_MESSAGE_MAP语句之后AFX_MSG_MAP括号外增加如下代码定义消息映射 ON_MESSAGE(WM_GOODBYE, OnGoodbye); 在CShowModelessDialogView.h中DECLARE_MESSAGE_MAP语句之前AFX_MSG括号之外增加如下消息映射的声明 afx_msg LRESULT OnGoodbye(WPARAM wParam, LPARAM lParam); 同样在CShowModelessDialogView.cpp中增加消息处理函数 LRESULT CShowModelessDialogView::OnGoodbye(WPARAM wParam, LPARAM lParam) { //输出按钮的IDOK按钮ID为1CANCLE按钮ID为2 //可以根据此消息进行用户的工作 TRACE(CShowModelessDialogView::OnGoodbye %x, %x\n, wParam); m_pDlg-DestroyWindow(); return 0L; } 11  使用菜单编辑器添加菜单项“演示—〉非模式对话框”对应ID为ID_MODELESS。为它创建消息处理函数如下 void CShowModelessDialogView::OnShowMD()  { //如果对话框窗口不存在则创建一个 if(m_pDlg-GetSafeHwnd()  0) { //创建对话框窗口显示Show Modeless Dialog对话框 m_pDlg-Create(); } } 编译并运行该程序选择“演示—〉非模式对话框”非模态对话框Modeless Dialog跳出这时我们仍可以在该对话框中工作也可以在应用程序的其他地方工作譬如选择“文件 —〉打开”就会跳出打开文件对话框。但是打开文件对话框是模态对话框所以在关闭它之前我们不能在应用程序的其他地方工作了。从中我们也可以体会到非模态对话框与模态对话框的不同。 本例中对非模态对话框传递的消息并未做处理只是简单的输出了用户所做的选择确定或取消。如果读者想要根据传递的消息做一些工作可以自己添加代码实现。
http://www.huolong8.cn/news/237155/

相关文章:

  • 网站建设的技术网站建站 优化推广
  • 网站建设 深圳信科公司买域名的钱最后给了谁
  • 上海市500强企业名单开封网站快速排名优化
  • 个人网站icp备案教程做游戏ppt下载网站有哪些内容
  • 企业建设网站对客户的好处2018新网站做外链
  • 简述网站建设的流程wordpress密码重置密码
  • 想在网站里添加超链接怎么做淘宝网站制作
  • 千岛湖建设集团办公网站郑州居家办公全员核酸
  • 济南微信网站建设西宁最好的建站公司
  • 杭州企业网站制作公司个人网页设计作品模板
  • 做医美设计的网站做网站竞争大吗
  • 台州企业建站系统wordpress代码 lt
  • 德阳市建设局网站地址杭州行业网站建设公司
  • 养殖推广网站怎么做工商注册咨询电话多少
  • 如何管理手机网站首页中卫网站建站设计
  • 制作网站哪家服务好甘肃兰州网站建设
  • 成华区微信网站建设公上门做美容的网站
  • 张家港做外贸网站微商店铺怎么开通
  • 免费做海报的网站做国外有那些网站比较好的
  • 超炫网站页面网络公司制作网站
  • 广西美丽乡村建设网站从网络全角度考量_写出建设一个大型电影网站规划方案
  • 教育网站平面设计伍佰亿营销型网站
  • 网站做支付宝花呗分期建站行业前景
  • 昆明手机网站开发电商网站建设浩森宇特
  • h5能做网站开发吗wordpress相册api
  • 网站建设域名怎么收费的阳江房管局查询房产信息网
  • 品牌专业建设网站自助建站免费建站平台
  • 网站数据库制作php网站开发前言
  • 揭阳市seo点击排名软件价格汕头自动seo
  • 建设网站的技术难点网页设计的基本原则是什么