void _LayersDialog::OnBnClickedRenameGroup()
{
LOG("CLICKED ON RENAME GROUP\n");
_LayersNameDialog name_dlg;
CComboBox* pComboBox = (CComboBox*)name_dlg.GetDlgItem(IDC_LAYERRENAME_COMBO);
pComboBox->AddString("moose");
// open the rename window
if (name_dlg.DoModal() == IDOK)
{
LOG("HIT OK");
}
}
窗户拒绝打开。如果我删除addstring,它可以正常工作。有任何想法吗?
最佳答案
我很惊讶您的代码没有崩溃。在调用DoModal之前,该对话框不存在,并且该对话框也不应该有任何子控件。您应该在处理程序中为WM_INITDIALOG(带有基于MFC的对话框的OnInitDialog)初始化子控件。
class _LayersNameDialog : public CDialog
{
// See: http://msdn.microsoft.com/en-us/vstudio/fwz35s59(v=vs.110)
BOOL OnInitDialog() override
{
CDialog::OnInitDialog();
CComboBox* pComboBox = (CComboBox*)GetDlgItem(IDC_LAYERRENAME_COMBO);
pComboBox->AddString("moose");
return TRUE;
}
};