分享

MFC--两种创建对话框的模式

 成长中辉煌 2014-08-22
如何创建模式对话框?(只有一个窗口是活动的)
新建个Dialog类CSimpleDlg(其基类为CDialog,并指定ID),然后添加在按钮响应中就ok了,注意添加相应的头函数,按钮响应中添加
CSimpleDlg simpleDlg;
simpleDlg.DoModal();
即可;

如何创建非模式对话框(多个窗口是活动的)

非模式对话框的创建不能象模式对话框一样调用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); ///显示

[如果m_mydialog声明的时候是指针,则添加以下代码:

m_mydialog=new CSimpleDlg();

 

m_mydialog->Create(IDD_SIMPLEDIALOG,NULL);

m_mydialog->ShowWindow(SW_SHOW);]


至此我们已经成功地创建并显示出一个非模式对话框,
值得注意的是在摧毁非模式对话框不能调用CDialog::OnCancel, 
因为OnCancel调用了EndDialog,而EndDialog只是使对话框不可见,
并没有删除它,所以应用程序需要重载OnCancel,并在其中调用
DestroyWindow。 

 http://wenku.baidu.com/view/ec98e52de2bd960590c67770.html


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

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多