分享

如何创建非模式对话框

 昵称44237 2007-09-13
非模式对话框的创建不能象模式对话框一样调用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。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多