无模式对话框的创建分析

寻Q757856333医

寻Q757856333医

2016-02-19 13:58

图老师小编精心整理的无模式对话框的创建分析希望大家喜欢,觉得好的亲们记得收藏起来哦!您的支持就是小编更新的动力~

在编程过程中,对话框经常用到,但对无模式和模式对话框的创建和销毁过程,经常有误解,下面提高一个无模式对话框的例子来剖析无模式对话框的形成:

无模式对话框与有模式对话框不同的是在创建后其他窗口都可以继续接收用户输入,因此无模式对话框有些类似一个弹出窗口。创建无模式对话框需要调用

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/bianchengyuyan/)

BOOL CDialog::Create( UINT nIDTemplate, CWnd* pParentWnd = NULL );之后还需要调用BOOL CDialog::ShowWindow( SW_SHOW);进行显示,否则无模式对话框将是不可见的。相关代码如下:

void CYourView::OnOpenDlg(void)
{
 /*假设IDD_TEST_DLG为已经定义的对话框资源的ID号*/
 CTestDlg *dlg=new CTestDlg;
 dlg-Create(IDD_TEST_DLG,NULL);
 dlg-ShowWindows(SW_SHOW);
 /*不要调用 delete dlg;*/
}

在上面的代码中我们新生成了一个对话框对象,而且在退出函数时并没有销毁该对象。因为如果此时销毁该对象(对象被销毁时窗口同时被销毁),而此时对话框还在显示就会出现错误。那么这就提出了一个问题:什么时候销毁该对象。我时常使用的方法有两个:

在对话框退出时销毁自己:在对话框中重载OnOK与OnCancel在函数中调用父类的同名函数,然后调用DestroyWindow()强制销毁窗口,在对话框中映射WM_DESTROY消息,在消息处理函数中调用delete this;强行删除自身对象。相关代码如下:

void CTestDlg1::OnOK()
{
 CDialog::OnOK();
 DestroyWindow();
}

void CTestDlg1::OnCancel()
{
 CDialog::OnCancel();
 DestroyWindow();
}

void CTestDlg1::OnDestroy()
{
 CDialog::OnDestroy();
 AfxMessageBox("call delete this");
 delete this;
}

这种方法的要点是在窗口被销毁的时候,删除自身对象。所以你可以在任何时候调用DestroyWindow()以达到彻底销毁自身对象的作用。(DestroyWindow()的调用会引起OnDestroy()的调用)

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/bianchengyuyan/)

通过向父亲窗口发送消息,要求其他窗口对其进行销毁:首先需要定义一个消息用于进行通知,然后在对话框中映射WM_DESTROY消息,在消息处理函数中调用消息发送函数通知其他窗口。在接收消息的窗口中利用ON_MESSAGE映射处理消息的函数,并在消息处理函数中删除对话框对象。相关代码如下: /*更改对话框的有关文件*/

CTestDlg2::CTestDlg2(CWnd* pParent /*=NULL*/)
 : CDialog(CTestDlg2::IDD, pParent)
{/*m_pParent为一成员变量,用于保存通知窗口的指针,
所以该指针不能是一个临时指针*/
 ASSERT(pParent);
 m_pParent=pParent;
 //{{AFX_DATA_INIT(CTestDlg2)
  // NOTE: the ClassWizard will add member initialization here
 /

展开更多 50%)
分享

猜你喜欢

无模式对话框的创建分析

编程语言 网络编程
无模式对话框的创建分析

创建无模式对话框

编程语言 网络编程
创建无模式对话框

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

无模式对话框的创建与使用

C语言教程 C语言函数
无模式对话框的创建与使用

创建有模式对话框

编程语言 网络编程
创建有模式对话框

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

director使用mui xtra创建对话框

设计软件 平面设计软件 广告设计软件
director使用mui xtra创建对话框

关于对话框

编程语言 网络编程
关于对话框

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

能忘则忘 随意而安 - QQ伤感分组

能忘则忘 随意而安 - QQ伤感分组

JavaScript中的正则表达式解析

JavaScript中的正则表达式解析
下拉加载更多内容 ↓