我在程序里新增了一个菜单项,点击它时弹出一个模态对话框,上面有一组单选控件,我在该对话框类里为这组控件定义了一个int型变量,现在程序运行时单击对话框的OK时控件变量的值已经与控件关联了,但是我想在这个对话框类以外的类里用到这个控件变量,应该怎么做呢?我有试过在调用的地方定义一个该对话框类的实例,然后通过实例调用其成员变量,但是此时变量并没有与控件关联起来,也就是说我改变控件的选择,该实例的变量成员并不变化,这是怎么回事噢?谢谢大家了先

解决方案 »

  1.   

    把这个变量设置成public咯
    然后 用对话框对象调用呀
    比如CDialog dlg;
    dlg.m_int;
      

  2.   

    定义一全局变量    点击OK时赋值在别处extern使用
      

  3.   

    改变选择的时候要手动更新变量的值
    比如CComboBox变量。
    你添加一个相应SecletChange的消息相应函数;
    里面这么写void OnxxxSelectChange()  //函数原型不是这样,用VS自动给你加
    {
        m_int=选择的值;
        或者
        UpDate();                 //这个如果的控件关联的变量是通过向导加的话,直接用就行。手动加
                                          //就需要到DDX函数里面改一下,仿照其他的格式自己写
    }
      

  4.   

    回复1L:我就是这样试的,但是通过对象来调用变量时不能实时更新
    回复4L:不好意思我没太看懂你的意思
    回复2L:我想要做的就是添加若干个新的菜单选项,用户通过菜单项完成设置,然后后台程序根据关联的控件变量进行响应,我有试过把这些菜单中包含的控件变量都放在同一个结构体中,这个结构体在View类中声明为全局变量,菜单设置有变化时,在更新控件变量的同时,将这些变量同时传递给结构体中的对应参数,然后主程序中直接调用结构体参数获得控件信息,但是在UpdateData(true)后,调用全局结构体传递控件变量时编译总是提示那个全局变量未定义,这是怎么回事噢
      

  5.   

    对你的控件点右键->添加变量->“选择类别”value型->输名字,然后变量关联完成了。然后在这个控件的属性列表中选择那个闪电的图标,有一个LBN_SELCHANGE,点右边的空白处,添加响应函数。
    然后在添加的函数里面写
    yourMenber=GetWindowTest();用listBox控件做试验吧
      

  6.   

    不用传递全局变量的。把你的对话框里面的那个变量设置成public就行。
    对话框窗口消失之后,对话框的类对象不会删除的,所以里面的变量依然可以使用
    CDialog dlg;
    dlg.Domodal();  //在对话框出来的时候再进行选择的操作,变量就会更新成你要的数据了
    int i=dlg.m_yourIntMember;