EVC中无模式对话框的应用

本文介绍了如何正确地打开和关闭无模式对话框,并确保资源得到妥善管理。包括创建无模式对话框的方法、如何让对话框始终置顶以及如何正确释放资源。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

无模式对话框在其父窗口中的打开方法,例子如下:

        CSystemSetDlg *pSystemDlg = new CSystemSetDlg(this);  //CSystemSetDlg为一个 无模式对话框类
        pSystemDlg->Create(IDD_SETALARM_DIALOG);
        pSystemDlg->ShowWindow(SW_SHOW);
     在上面的代码中,如果this是程序子窗口而非主窗口,那么程序子窗和无模式对话框将是被激活的显示在最前面。如果要求无模式对话框 总是显示在最前面,pSystemDlg->Create(IDD_SETALARM_DIALOG)必须改 为:pSystemDlg->Create(IDD_SETALARM_DIALOG,this),即指定程序子窗口为无模式对话框的父类。
    关闭无模式对话框出错的问题,由于无模式对话框是采用pDlg->ShowWindow(SW_SHOW)方式打开,所以在无模式窗口对话框时,父 窗口并不知道已关闭,也不会去释放其资源,所以释放资源必须由无模式窗口对话框自己完成。在VC++中,释放资源可以重载OnDestroy(),在 CDialog::OnDestroy()函数之后调用 delete this 方法;但在EVC中,这种操作会出错,必须重载PostNcDestroy(),在CDialog::PostNcDestroy()之后调 用 delete this 方法释放资源。在程序中还需要重载OnOk,OnCancel,OnColse函数,在这些函数最后调用DestroyWindow(),此函数会引起 PostNcDestroy函数的执行。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值