我有一个对话框资源InputDlg,里面有个combobox控件,我想根据不同的需要初始化combobox控件下拉菜单里的内容,请问该如何做?是不是需要重载构造函数还是别的什么办法?如果重载构造函数,那该如何实现?
感谢!!!

解决方案 »

  1.   

    你可以在你的对话框的Init中去设置ComboBox里面的内容啊。。
      

  2.   

    直接CComboBox::AddString设置添加数据不就可以了
      

  3.   

    谢谢大家 我没有说清楚 我有对话框A 在点击对话框A中的按钮 调用B.domodal()弹出B对话框 B对话框要根据A中的参数生成不同ComboBox内容,有没有好的解决办法 感谢感谢
      

  4.   

    保存A中的设置(可以保存到一个结构或者到配置文件都可以),然后在B初始化时用CComboBox::AddString加载。
      

  5.   


    同意这种方法,还有一种方法:就是B中重载下构造函数,调用B的时候先,A *b;b = new B(&X);将A中所选的值传进去,之后再初始化对话框的时候判断,并且AddString设置数据。
      

  6.   

    重载构造函数有点不太熟 能给个具体点的么 以下是原有的构造函数:
    dlg::dlg(CWnd* pParent /*=NULL*/)
    : CDialog(dlg::IDD, pParent)
    {
    //{{AFX_DATA_INIT(dlg)
    // NOTE: the ClassWizard will add member initialization here
    //}}AFX_DATA_INIT
    }
    想传个整形变量就可以了 
      

  7.   

    我觉得重新写一下构造函数,根据传入的参数来初始化比较好。
    先给你的对话框类加一个成员变量用来接收传入的参数,比如定义为:int m_a;
    构造函数写成:
    dlg::dlg(int a,CWnd* pParent)
    : CDialog(dlg::IDD, pParent)
    {
    //{{AFX_DATA_INIT(dlg)
    // NOTE: the ClassWizard will add member initialization here
    //}}AFX_DATA_INIT
    m_a=a;
    }
    在主对话框调用时可以这样写:dlg d(m,this);其中m是A对话框传入的控件参数。
    在dlg类中可以根据传入的m_a进行初始化工作
      

  8.   

    dlg::dlg(int *a,CWnd* pParent /*=NULL*/)
    : CDialog(dlg::IDD, pParent)
    {
    //{{AFX_DATA_INIT(dlg)
    // NOTE: the ClassWizard will add member initialization here
    b = a;
    //}}AFX_DATA_INIT
    }在头文件中相应的在构造函数中加入这个int *a 。然后定义一个public 变量 int *b;
    然后直接对b进行操作就可以了。