比如我在CMyDialog1按钮上使用非模态方式显示另一个对话框CMyDialog2(如果有了就使它变为活动窗口)
if(!FindWindow(NULL,m_sText))
{
CMyDialog1* dlg1=new CMyDialog1;
dlg1->Create(IDD_DIALOG1,this);
dlg1->ShowWindow(SW_SHOW);
}
else
{
CWnd* oldWnd=FindWindow(NULL,m_sText);
oldWnd->SetForegroundWindow();当关闭CMyDialog2时怎么销毁呢?我是在CMyDialog2中的 CMyDialog2::PostNcDestroy()
中增加了 delete this; OnOK()和OnCancel()是这样写的,不知道对不对:void CMyDialog2::PostNcDestroy()
{
delete this;
CDialog::PostNcDestroy();
}void CMyDialog2::OnOK()
{
CMyDialog2::DestroyWindow();
// CDialog::OnOK();
}void CMyDialog2::OnCancel()
{
CMyDialog2::DestroyWindow();
// CDialog::OnCancel();
}现在是显示对话框没问题,但是关闭后就不能再显示出来了!请问,问题出在哪?
单步调试发现关了对话框后仍然能找到,所以就不会显示出来,所以应该是销毁
对话框的地方有问题,但如何销毁这个CMyDialog2呢??
if(!FindWindow(NULL,m_sText))
{
CMyDialog1* dlg1=new CMyDialog1;
dlg1->Create(IDD_DIALOG1,this);
dlg1->ShowWindow(SW_SHOW);
}
else
{
CWnd* oldWnd=FindWindow(NULL,m_sText);
oldWnd->SetForegroundWindow();当关闭CMyDialog2时怎么销毁呢?我是在CMyDialog2中的 CMyDialog2::PostNcDestroy()
中增加了 delete this; OnOK()和OnCancel()是这样写的,不知道对不对:void CMyDialog2::PostNcDestroy()
{
delete this;
CDialog::PostNcDestroy();
}void CMyDialog2::OnOK()
{
CMyDialog2::DestroyWindow();
// CDialog::OnOK();
}void CMyDialog2::OnCancel()
{
CMyDialog2::DestroyWindow();
// CDialog::OnCancel();
}现在是显示对话框没问题,但是关闭后就不能再显示出来了!请问,问题出在哪?
单步调试发现关了对话框后仍然能找到,所以就不会显示出来,所以应该是销毁
对话框的地方有问题,但如何销毁这个CMyDialog2呢??
解决方案 »
- 请教串口通讯的设置保存的问题
- 在vc6里面的按钮怎么实现鼠标移上去后,显示提示文字?如果有知道.net怎么实现的也可以说说啊。
- 能不能把对话框的底色也做成Office2003的菜单的底色那样????
- vector的使用问题
- 线程权限问题???????高手帮忙
- 只有在listctrl控件中选中一行才使一些按钮有效,该使用哪个消息?如果换做是只有在树型控件中点击叶节点才有效呢?
- 一个项目的评估,大侠请进。
- 两个关于 ADO 的问题想请教!各位大哥能帮助我解决吗?
- 编译微软的Detours 1.5时老是出错:fatal error LNK1103
- 苍天啊,请代我走进COM的大门
- CListCtrl中tooltip的奇怪问题
- 一个关于滚动条的小问题,希望高手帮忙!!!谢谢!!!
如果仅仅是不想让对话框可见,需要的时候再显示出来,应该用ShowWindow
void CMyDialog2::OnOK()
void CMyDialog2::OnCancel()
我把OnCancel()里面内容屏蔽后,关闭程序也不会执行其他几个地方。但当我关闭整个程序时,会执行PostNcDestroy里面的内容。void CMyDialog2::PostNcDestroy()
void CMyDialog2::DestroyWindow()
void CMyDialog2::OnOK()
void CMyDialog2::OnCancel()
是觉得窗口没有关掉么?调用DestroyWindow就好了啊另,你给的代码和CMyDialog2有关系么?
dlg1->Create(IDD_DIALOG1,this);
dlg1->ShowWindow(SW_SHOW);