C++ C++;MFC-向组合框添加字符串可防止窗口打开

C++ C++;MFC-向组合框添加字符串可防止窗口打开,c++,mfc,C++,Mfc,窗户打不开。如果我删除addstring,它可以正常工作。有什么想法吗?我很惊讶你的代码没有崩溃。在调用DoModal之前,该对话框不存在,也不应为其创建任何子控件。您应该在WM_INITDIALOG(带有基于MFC的对话框的OnInitDialog)的处理程序中初始化子控件 @KristerAndersson现在再次加载对话框。它只是不使用AddString或InsertString添加任何内容 void _LayersDialog::OnBnClickedRenameGroup() {

窗户打不开。如果我删除addstring,它可以正常工作。有什么想法吗?

我很惊讶你的代码没有崩溃。在调用DoModal之前,该对话框不存在,也不应为其创建任何子控件。您应该在WM_INITDIALOG(带有基于MFC的对话框的OnInitDialog)的处理程序中初始化子控件


@KristerAndersson现在再次加载对话框。它只是不使用AddString或InsertString添加任何内容
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");
    }
}
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;
    }
};