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");
}
}
窗口拒绝打开。如果我删除了添加字符串,它工作正常。有什么想法吗?
答案 0 :(得分:8)
我很惊讶您的代码没有崩溃。在您调用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;
}
};