2013-05-21 67 views
0
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,它工作正常。有任何想法嗎?C++ MFC - 向組合框添加字符串可防止窗口打開

+0

@KristerAndersson對話框現在再次加載。它只是不添加任何與AddString或InsertString –

回答

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; 
    } 
};