读书人

调用对话框出现的有关问题

发布时间: 2012-02-03 22:02:47 作者: rapoo

调用对话框出现的问题
一个对话框上面一个按钮,点击后弹出一个新的对话框.
调试后发现新对话框的hwnd=0x00000000
但是DoModal()函数照样可以调用。好奇怪哟,不知道怎么回事。
谁解释一下啊!

CNewDlg m_ntd; //定义对象
COldDlg::Test()
{
m_ntd.DoModal();//函数照样可以调用
MessageBox( "haha ");
}
无论调试点放在何处都会出现hwnd=0x00000000

[解决办法]
DoModal()之前,对话框没有创建;DoModal()返回,对话框已经销毁。
所有对对话框窗口相关的操作,都放到该对话框类内部去处理。在DoModal()外面,只能访问非窗口相关的变量。
[解决办法]
m_NewDlg.m_combobox.GetWindowText(str)这个代码不应该在DoModal后调用,因为Domodal后整个对话框已经销毁,所以m_NewDlg.m_combobox这个是无效的。正确的做法:
1:
Class CMyDialog : public CDialog
{

CString m_strCombox;
}

2:CMyDialog::OnOk()
{
m_strCombox = m_combobox.GetWindowText(str);
}

3:
m_ntd.DoModal();
CString str = m_ntd.m_strCombox;

读书人网 >VC/MFC

热点推荐