如何创建非模式对话框

来源:百度文库 编辑:神马文学网 时间:2024/04/28 01:24:09
非模式对话框的创建不能象模式对话框一样调用DoModal来实现,
而应该用Create函数来创建,Create的原形如下:
BOOL Create(UINT nIDTemplate,CWnd* pParentWnd = NULL)
其中nIDTemplate是对话框模板资源ID,pParentWnd是父窗口指针,
假如pParentWnd不为NULL,则此非模式对话框总在父窗口之上,
我们举例来说明在SDI程序中非模式对话框的建立过程:
首先我们创建一个SDI程序。
然后在资源编辑器里面制作好对话框模板IDD_MYDIALOG,
双击对话框资源,为对话框创建新的类CMyDialog,基类为CDialog
我们为VIEW类添加一个成员变量CMyDialog m_mydialog;
然后为VIEW类添加WM_CREATE消息处理函数,在其中加上
m_mydialog.Create(IDD_MYDIALOG,this);///创建
m_mydialog.ShowWindow(SW_SHOW); ///显示
至此我们已经成功地创建并显示出一个非模式对话框,
值得注意的是在摧毁非模式对话框不能调用CDialog::OnCancel,
因为OnCancel调用了EndDialog,而EndDialog只是使对话框不可见,
并没有删除它,所以应用程序需要重载OnCancel,并在其中调用
DestroyWindow。