模式和无模式对话框覆盖
2021-09-06 09:56 来源:莱西养生网
无模式对话框与有模式对话框不同的是在创建后其他窗口都可以继续接收用户输入,因此无模式对话框有些类似一个弹出窗口。创建无模式对话框需要调用
BOOL CDialog::Create( UINT nIDTemplate, CWnd* pParentWnd = NULL );然后再调用
BOOL CDialog::ShowWindow( SW_SHOW);进行显示,否则无模式对话框将是不可见的。相关代码如下: void CView::OnOpenDlg(void)
{
CDialog *dlg=new CDlg;
dlg-Create(IDD_DLG,NULL); //IDD_DLG为已经定义的对话框资源的ID号
dlg-ShowWindows(SW_SHOW);
}
在上面的代码中我们新生成了一个对话框对象,而且在退出函数时并没有销毁该对象。因为如果此时销毁该对象(对象被销毁时窗口同时被销毁),而此时对话框还在显示就会出现错误。所以我们可以在对话框退出时销毁自己:在对话框中重载OnOK与OnCancel在函数中调用父类的同名函数,然后调用DestroyWindow()强制销毁窗口,在消息处理函数中调用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()的调用)
对于模式对话框只需要调用DoModal();即可,而且在退出对话框时自动销毁该对象:
void CView::OnOpenDlg(void)
{
CDialog dlg;
Modal();
}
Trackback:
贵阳哪医院治疗男科好小孩积食怎么办
无锡治疗白癜风医院哪好
- 上一篇:模型驱动帮助提高开发团队效率计划
- 下一篇:模式验证结构的特性牛
-
大白熊犬呼吸道感染怎么治疗位置
我们家皮皮从昨天开始咳嗽特别厉害,今天早上带他去医院,医生说是呼吸道感染。请问这个病怎么治疗?迷失方向:大白熊犬多大了?打过免疫针吗?有点像狗瘟建议你快到正规宠物医院治疗一般是先打血清 观...
-
大白熊犬吐白色沫和水四天了有什么治疗方法位置
大白熊犬呕吐四天了,白色沫和水,不太爱吃饭,每天吃一顿饭吃一点,不拉稀,排便一天一次,精神状态良好,早上吃点大米饭吐了,就没再吃别的,下午吐沫和水,大白熊犬价格第二天晚上吃了点煮鸡蛋,爱啃...
-
大白熊犬吃钙片的重要意义位置
如今想要饲养一只可爱健康的狗狗,真的需要科学的喂养方法,我们应该告别过去古老的喂养方式,应该本着大白熊犬的健康为目的,要处处为狗狗着想,这也是饲养大白熊犬很重要的事情。很多主人们不知道给大...
-
大白熊犬口腔护理的重点要素位置
狗狗的口腔健康往往都是大家最不关注的,但是主人们想要更好的照顾大白熊犬,就一定要知道如何护理好大白熊犬的口腔健康,因为狗狗的口腔健康对于我们的爱犬来说是最重要的,也是保证了宠物狗牙齿健康的...
-
大白熊犬厕所大小便怎么训练位置
训练大白熊犬在固定的地方大小便是需要很长一段时间才能够完成的事情。狗狗任何的习惯养成,都需要一定的时间,特别是从小养成的习惯,所以训练大白熊犬上厕所也是一样的,最好能够从狗狗刚断奶就开始训...
-
大白熊犬中毒之后要如何医治位置
主人们在饲养大白熊犬的时候,它的健康与安全问题就是我们最关心的事情。我们在日常喂养大白熊犬的时候,有时由于我们的喂养出现了一定的问题,所以会让宠物狗吃了很多不安全的食品,这样就会导致大白熊...