我在对话框中加了CComboBox和CEditRich类的两个控件,并分别加了变量:
m_ComboCtrl,m_RicheditCtrl。然后用m_ComboCtrl.AddString("str")等
操作时就出错,debug发现这两个变量的hWnd = Ox00000000,这是怎么回事?
(而在一个CRecordView的框中随便加都可以)
m_ComboCtrl,m_RicheditCtrl。然后用m_ComboCtrl.AddString("str")等
操作时就出错,debug发现这两个变量的hWnd = Ox00000000,这是怎么回事?
(而在一个CRecordView的框中随便加都可以)
是不是使用ClassWizard添加的?程序错误表明:你的CComboBox还没有被创建。
还有,你是在什么地方执行的Add("Str")操作?
在OnInitDialog里执行的Add("Str")操作.
BOOL CYourDialog::OnInitDialog()
{
m_ComboCtrl.AddString("str");
return CDialog::OnInitDialog();
}
改成这样:
BOOL CYourDialog::OnInitDialog()
{
if(FALSE == CDialog::OnInitDialog())
return FALSE; m_ComboCtrl.AddString("str"); return TRUE;
}
为什么会这样呢? 因为在你没有调用CDialog::OnInitDialog之前,程序还没有调用DoDataExchange函数把你的变量和你相应的控件联系起来,所以其m_hWnd为0x00000000。
类,假设在View类里,你就要先找到其句柄。假设用pView存储。
pView->m_ComboCtrl.addstring("sss");
但你要注意的是编译的时候,在你添加的时刻,View有没被创建,如果没创建就会有pView的值为空的错误,当然程序就有问题了。
面的选项,不知道是怎么回事。谢谢各位。