我在资源编辑中编辑了一个对话框,中间有一个ComBoBox控件,然后生成类,并且加一个CComboBox类型的变量m_comBobox.我在其他的视图类中构造一个对话框对象后,要在ComBoBox中加入数据,却总是出问题.我的代码是这样的:
CInsertDlg dlg;//CInsertdlg是生成的对话框类
dlg.m_comBobox.AddString("Item1");
可样不行,怎么办的呢?

解决方案 »

  1.   

    CDlg *dlg;
    dlg = new CDlg;
    dlg->Create(IDD_DIALOG1,AfxGetMainWnd());
    dlg->m_com.AddString("item");//这里要保证m_com是CComboBox类型的
    dlg->ShowWindow(SW_SHOW);参考:
    http://community.csdn.net/Expert/FAQ/FAQ_Index.asp?id=203350
      

  2.   

    在窗体没创建之前其句柄为NULL,dlg.m_comBobox也是基于CWnd的所以在窗体没创建之前其m_hWnd也为NULL,所以会出错。可以在对话框类的OnInitDialog() 中做初始化工作。
      

  3.   

    Add那里没有问题了,可是在调用dlg.DoModal()后出问题了,怎么回事呢?
      

  4.   

    在InitDialog里面执行
    dlg->m_com.AddString("item");//这里要保证m_com是CComboBox类型的可以这样做:
    在CDlg里声明一个CString,
    构造时把那个"item"存下来。
    InitDialog时AddString
      

  5.   

    to swimmingfish2004(something) 
    告诉我怎么做好吗?
    其实就是在菜单中选择一个命令,然后弹出一个对话框,中间包含一个ComboBox,我在中间选择一条记录后,单击确定关掉对话框,执行相关命令.
      

  6.   

    在CDlg中
    BOOL CInsertDlg ::OnInitDialog() 
    {
    CDialog::OnInitDialog();

    // TODO: Add extra initialization here
    m_comBobox.AddString("Item1");
    return TRUE;  // return TRUE unless you set the focus to a control
                  // EXCEPTION: OCX Property Pages should return FALSE
    }
    在视图类中
    CInsertDlg dlg;
    dlg.DoModal();这样行吗?
      

  7.   

    按照laiyiling(programmer)的方法就可以了,但是不能调用DoModal(),我想还请问下,这样弹出的对话框是非模式对话框,有办法将它变为模式对话况吗?