对话框上控件的问题

来源:百度知道 编辑:UC知道 时间:2024/05/21 15:04:04
我的程序是这样的:
自己创建了个对话框类CTestDlg 里面关联了一个CComboBox(m_selList)控件,并且在OnInitDialog里面把m_selList给添加选项了(m_selList.AddString),问题出现在我在MainFrame里面创建对话框(DoModal),但是当用户返回IDOK时候我去不到用户选择的combobox,dlg的m_hWnd总是null,m_combobox也是null。
这个问题很怪,我想了很久了都没有解决。
mainframe的代码:
void CMainFrame::OnCtrltest()
{
// TODO: 在此添加命令处理程序代码
CTestDlg dlg(this);
if (IDOK == dlg.DoModal())
{
dlg.m_selList.GetCurSel();
}
}
调试可以看到m_selList和dlg都是null。谢谢各位了!!!

if (IDOK == dlg.DoModal())
{
dlg.m_selList.GetCurSel();
}
当dlg.DoModal()返回时,对话框资源(包括上面的控件)已经被释放,但析构函数还未调用。因此,你应当在dlg中响应m_selList的CBN_SELCHANGE消息,并用成员变量将m_selList.GetCurSel的值记下来,这样无论在if (IDOK == dlg.DoModal()) {}内外都可以获得该值。

IDOK == dlg.DoModal()

后程序对话框都被销毁了,当然会出错啦

要么换成非模式对话框,要么在对话框销毁之前将数据传出来