MFC中对话框的使用

原创 2006年05月17日 21:49:00

在单文档MFC应用程序中,创建一个对话框:
1、首先添加一个新的对话框资源,获得它的ID号。
2、为这个对话框资源新建一个对应的对话框类。
如何使用创建的对话框呢?
如果是模式对话框,对话框工作的时候应用程序会暂停。
首先先创建一个刚才创建的对话框类的对象,如dlg
然后调用它的成员函数DoModel()即可。
如果是非模式对话框,对话框工作的时候应用程序照常工作。
也要先创建一个对象,因为对话框工作的时候应用程序不会停下来,
所以这个对象的作用域不能是局域。否则看不到的。办法:创建一个堆,用new关键字。如  CDlg *pDlg=new CDlg;
然后 pDlg->Create(资源ID号,this);this指父窗口指针。
 pDlg->ShowWindow(SW_SHOW/*显示方式*/);
但这个指针是个局部变量。它生命周期结束后它所保存的地址就丢失了。可以将它改为成员变量,在析构函数里delete。
对于ID为IDOK的按钮,
关闭的时候,如果是非模式对话框,必须重载OnOK函数,调用销毁对话框函数,否则只是将对话框隐藏了,而没有销毁。
非模式对话框比较麻烦,还是用模式对话框吧。

每个控件都有一个自己的句柄,它就是控件的成员变量m_hWnd
获取对话框上控件以及控件的文本的方法有几种?
7种:
GetDlgItem()->Get(Set)WindowText()
GetDlgItemText()/SetDlgItemText()
GetDlgItemInt()/SetDlgItemInt()
将控件和整型变量相关联
将控件和控件变量相关联
SendMessage()
SendDlgItemMessage()

Z-次序
窗口的Z次序表明了重叠窗口堆中窗口的位置,这个窗口堆是按一个假想的轴定位的,这个轴就是从屏幕向外伸展的Z轴。Z次序最上面的窗口覆盖所有其它的窗口,Z次序最底层的窗口被所有其它的窗口覆盖。应用程序设置窗口在Z次序中的位置是通过把它放在一个给定窗口的后面,或是放在窗口堆的顶部或底部。
        Windows系统管理三个独立的Z次序——一个用于顶层窗口、一个用于兄弟窗口,还有一个是用于最顶层窗口。最顶层窗口覆盖所有其它非最顶层窗口,而不管它是不是活动窗口或是前台窗口。应用程序通过设置WS_EX_TOPMOST风格创建最顶层窗口。
        一般情况下,Windows系统把刚刚创建的窗口放在Z次序的顶部,用户可通过激活另外一个窗口来改变Z次序;Windows系统总是把活动的窗口放在Z次序的顶部,应用程序可用函数BringWindowToTop把一个窗口放置到Z次序的顶部。函数SetWindowPos和DeferWindowPos用来重排Z次序。

MFC对话框程序中使用OpenGL

在MFC的对话框程序中需要使用OpenGL在某个对话框中作图,综合和网上的两篇文章的内容(文章一,文章二),也有自己的心得体会。         首先需要配置好opengl的环境,程序中会使用到gla...
  • u012501459
  • u012501459
  • 2013年12月02日 13:50
  • 2256

MFC的对话框中使用OpenGL绘图

我们在编写软件是总是会有自己的界面,当然利用C++就不得不喝MFC打交道了,那么可视化界面通常就要用MFC的Dialog;OpenGL通常画图时会自己生成一个窗口,就如同OpenCV一样,但现在我想O...
  • u010260855
  • u010260855
  • 2014年03月18日 23:36
  • 3591

在MFC对话框中显示html网页

头文件: [cpp] view plain copy  print? #pragma once   #include    #include   ...
  • u011473714
  • u011473714
  • 2017年02月22日 23:47
  • 792

MFC中,模态对话框的使用

windows8,vs2012环境,MFC中创建模态对话框的具体步骤
  • lqs1306
  • lqs1306
  • 2016年12月23日 10:05
  • 323

MFC对话框编程详细学习笔记

因最近研究工作要用到MFC,故再次重温了孙鑫老师的MFC对话框编程,因所用的编译软件为VS2008,与视频中孙老师使用的VC++6.0有很大出入,造成很大不便,我通过各方查找,实现了VS2008相对应...
  • Bright_Geek
  • Bright_Geek
  • 2014年10月25日 20:29
  • 2817

在一个对框框中调用另一个对话框的变量

void Footy::OnBnClickedBtnArefresh() {  // TODO: 在此添加控件通知处理程序代码  UpdateData(TRUE);  CSetting* pS...
  • ilikehigame
  • ilikehigame
  • 2014年04月25日 16:37
  • 807

MFC对话框处理滚动条

MFC对话框处理滚动条flyfish头文件//成员变量 //在资源视图中看到的对话框的大小 CRect m_rectOriginal; // 鼠标拖拽 BOOL...
  • flyfish1986
  • flyfish1986
  • 2017年05月23日 14:51
  • 996

直接在MFC的对话框上利用OpenGL绘制图形

借鉴前人的经验,如链接http://www.cnblogs.com/phinecos/archive/2007/07/28/834916.html介绍了如何利用MFC的单文档来使用OpenGL(本文也...
  • hurricanecqj
  • hurricanecqj
  • 2015年05月01日 15:20
  • 1505

vs 开发工具 中开发mfc项目在输出对话框中输出打印的方法

1、OutputDebugString 2、TRACE
  • kin988g
  • kin988g
  • 2015年04月12日 16:21
  • 600

用VC6.0建立MFC工程,建立对话框和简单的实现跳转

对话框的新建及跳转 点击File->New->Project->MFC AppWizard(exe)填写好路径和工程名称 选择dialog based。点击Finish。就新建好了。   右键...
  • liangyong_hui
  • liangyong_hui
  • 2016年06月30日 23:57
  • 3035
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:MFC中对话框的使用
举报原因:
原因补充:

(最多只允许输入30个字)