请问各位大侠们:
我在VC++,框架类里定义了一个对话框类的成员变量dlg,
用如下语句显示:
dlg.Creat(IDD_DIALOG1,this);
dlg.ShowWindow(SW_SHOW);
其中IDD_DIALOG1为所作对话框的句柄.
但是第一次显示正常,关闭对话框,重新点按钮希望再打开就错误了.请问这是什么?
我用另一种方法,就是定义一个动态指针对象,然后在框架类的析构函数中释放,那样就一切正常,即使同时打开多个对话框也没有问题.
但是第一种方法为什么不行呢?我查了MSDN也没有结果.有哪位大侠遇到过这个问题的话,请帮忙指教啊,不胜感激.
我在VC++,框架类里定义了一个对话框类的成员变量dlg,
用如下语句显示:
dlg.Creat(IDD_DIALOG1,this);
dlg.ShowWindow(SW_SHOW);
其中IDD_DIALOG1为所作对话框的句柄.
但是第一次显示正常,关闭对话框,重新点按钮希望再打开就错误了.请问这是什么?
我用另一种方法,就是定义一个动态指针对象,然后在框架类的析构函数中释放,那样就一切正常,即使同时打开多个对话框也没有问题.
但是第一种方法为什么不行呢?我查了MSDN也没有结果.有哪位大侠遇到过这个问题的话,请帮忙指教啊,不胜感激.
2.dlg.Creat是什么时候调用的?有没有重复调用的问题?
3.你所说的另一种方法,其运行路线可能和这个有很大不同。所以,另一种方法正常和这种方法不正常没有丝毫关系。
4.MSDN?你怎么查的?
ASSERT(pWnd->m_hWnd == NULL); // only do once //就是这句断言失败了!
因为你用成员变量来保存. 第二次双击时,就在上述语句处断言失败了.
你可以在RELEASE试下,肯定是不会弹错误的.
其实本质是由于非模态窗口关闭时只是隐藏,窗口并没有销毁的缘故.当第二次再想显示时就是重复调用了
dlg.Creat(IDD_DIALOG1,this);