VC设计一个按钮弹出一个窗口的问题

来源:百度知道 编辑:UC知道 时间:2024/06/18 04:11:45
我设置了一个按钮,弹出一个密码验证窗口。
但是只能使用一次。
如果cancel或者OK之后,再点击这个按钮,程序就会报错,不能启动窗口了。
别人告诉我要在启动这个窗口的代码前面加一个判断,但是我不会啊,请高手指教。

下面是我弹出窗口的代码,请问怎么做一个判断啊?

m_PassDlg.Create(IDD_DLG_PassWordDlg,this);
m_PassDlg.ShowWindow(SW_SHOW);

不胜感激。

首先,你要用指针
比如CPassDialog* m_PassDlg=NULL;
然后,你要new一下
m_PassDlg=new CPassDialog;
然后就是你的代码了,不过要用模式对话框
m_PassDlg->Create(IDD_DLG_PassWordDlg,this);
m_PassDlg->DoModel();
对话框关闭后还要删除
delete m_PassDlg;
所有的,就是以下这些了:

CPassDialog* m_PassDlg=NULL;
。。。。。
。。。。
。。。。
。。。。
m_PassDlg=new CPassDialog;
m_PassDlg->Create(IDD_DLG_PassWordDlg,this);
m_PassDlg->DoModel();
delete m_PassDlg;

你代码创建的是非模态对话,我估计你是在响应Ok,cancel时调用了CDialog::OnOk()或CDialog::onCancel()了。这两个函数内部调用EndDialog(),它只是使对话框不可见,并没有销毁对话框,所以当第二次执行Create出错。

解决办法:第一种:可以创建模态对话窗口,方法就是1楼说的那样很详细了。
第二种:保持非模态对话窗口不变,在你响应Ok,cancel按钮时不要调用CDialog::OnOk()或CDialog::onCancel(),改调用DestoryWindow().

一定要注意模态对话框和非模态对话框的一些区别,相对来说模态对话框使用更简单。