dialog
box),一个是非模态对话框(modeless
dialog
box)。这里解释模态对话框的创建。
模态对话框(model
dialog
box)
在程序运行的过程中,若出现了模态对话框,那么主窗口将无法发送消息,直到模态对话框退出才可以发送。
点击模态对话框中的OK按钮,模行激态对话框会被销毁。
创建一个模态对话框的代码如下所示:
//创建一个模态对话框
CTestDialog td
td.DoModal()其中CTestDialog为我自己所新建的和一个对话框资源相关联的对话档悔袜框类。
可以创建一个布局模态对话框类变量,不用担心它会随着所在函数返回而被销毁。因为DoModal()函数的一个功能前卖是,当前只能运行此模态对话框,且停止主窗口的运行,直到模态对话框退出,才允许主窗口运行。
DoModal()函数也有显示对话框的功能,所以也无需调用其他函数来显示对话框。
你这就是用错误的方法解决问题,微软定义了模态和非模态那就应该按照他的思路来,如果你因要用非模态来实现模态这个从根本上是不行的,模拟或许可以但是肯定很不完整。在MFC中,如果你需要保存模态对话框的数据和什么局部不局部闭大旅的变量一点关系都没有,你这么做就可以了。先声明一个结构体,在你对话框类的头文件里写就行了,里面包括你所有要保存的数据:
typedef struct
{
int a
double b
CString c
} Data
然后你修改你的模态对话框的类,增加一个该结构体的指针,构造函数变成如下的样子
class CMyDialog:
{
public:
CMyDialog(Data* pData)
//...
protected:
Data* m_pData
...
}
在CPP文件把构造函轿凳数实现的参数改成和声明一样,然后将指针m_pData初始化
m_pData = pData
你可以在父窗口或者框架声仿汪明一个Data的结构体变量
Data m_data
然后在要显示模态对话框的地方
CMyDialog dlg(&m_data)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)