MFC 全局函数调用对话框类的资源 出现一个问题 求指教
建立了一个MFCdll的工程,添加了一个对话框资源,对话框上只放置了一个列表框控件。新建一个.CPP和.H文件,在.cpp里把创建出来对话框(模态的)后,对两个控件进行操...
建立了一个MFC dll的工程,添加了一个对话框资源,对话框上只放置了一个列表框控件。
新建一个.CPP和.H文件,在.cpp里把创建出来对话框(模态的)后,对两个控件进行操作,如下:
CMyDialog dlg;
if (dlg.DoModal()==IDOK)
{
int nSelectItem;
nSelectItem=dlg.m_combox.GetCurSel();
}
编译没问题,运行的时候出现内存错误,为什么会这样子呢?列表框里面的内容是在调用OnInitDialog的时候添加进去的。 展开
新建一个.CPP和.H文件,在.cpp里把创建出来对话框(模态的)后,对两个控件进行操作,如下:
CMyDialog dlg;
if (dlg.DoModal()==IDOK)
{
int nSelectItem;
nSelectItem=dlg.m_combox.GetCurSel();
}
编译没问题,运行的时候出现内存错误,为什么会这样子呢?列表框里面的内容是在调用OnInitDialog的时候添加进去的。 展开
展开全部
nSelectItem=dlg.m_combox.GetCurSel();
这样做是不行的,在DoModal函数返回之后,dlg类存在,但对话框窗口已经销毁了,窗口中的控件也无效了,因此m_combox.GetCurSel();会失败。
在CMyDialog类的OnOK函数中,将m_combox.GetCurSel(); 记录在类成员变量(自定义public)nSel中,然后,上面代码改成:
nSelectItem=dlg.nSel;
就可以了。
这样做是不行的,在DoModal函数返回之后,dlg类存在,但对话框窗口已经销毁了,窗口中的控件也无效了,因此m_combox.GetCurSel();会失败。
在CMyDialog类的OnOK函数中,将m_combox.GetCurSel(); 记录在类成员变量(自定义public)nSel中,然后,上面代码改成:
nSelectItem=dlg.nSel;
就可以了。
来自:求助得到的回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询