首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

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

2012-02-03 
调用对话框出现的问题一个对话框上面一个按钮,点击后弹出一个新的对话框.调试后发现新对话框的hwnd0x0000

调用对话框出现的问题
一个对话框上面一个按钮,点击后弹出一个新的对话框.
调试后发现新对话框的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;

热点排行