用MFC些一个程序,在菜单项中添加一个“颜色”选项,若单击颜色,则弹出对话框(colorDlg),上面有一些颜色的单选按钮,然后选择需要的颜色,按下确定。比如选红色就定义color = 1;黄色color = 2; 蓝色 color = 3;
   要如何让所选信息返回给CxxView类,可以让CxxView中进行对信息的处理

解决方案 »

  1.   

    简单的方法就是用全局变量,将color设为全局变量即可。
      

  2.   

    如果数据是在View中处理,而数据存放在DOC中,这样不是会更加困难吗?这方面不是很懂,如果可以详细点,或举例说明下可能效果会更好。
      

  3.   

    可以在C##View中增加成员变量color,在你所建的对话框中分别为个命令控件加入消息响应函数到C##View中
    然后在对每个函数需要实现的功能为color赋值.
      

  4.   

    没能成功,可以在view中添加响应函数,但是对成员数据处理不了好像。
    void C##View::OnBlack() //在view添加的单选按钮响应函数
    {
    // TODO: Add your control notification handler code here
    color = 1;
    }
    但是没有改变值,color还是赋值状态。
      

  5.   

    上面不是说了吗?用全局变量,你在CxxxView类的CPP文件的空白的地方定义一个变量,比如:int color;
    然后在对话框类的CPP文件中用extern int color=1;初始化一下,然后就可以在两个类中引用了。
      

  6.   

    全局变量好像也没用,会出现##View.obj : error LNK2005: "int color" (?color@@3HA) already defined in CHOOSE.obj

    Error executing link.exe.
      

  7.   

    不可能吧,你是不是吧color设为了静态(static)变量了
      

  8.   

    不是没用,而是你不会用,如果你的全局变量是在CXXXView类的CPP文件中定义的,那么在对话框类的CPP文件中,应用之前一定要写作:extern int color=1;前面的extern绝对不可以少,它表示这个变量定义在外部文件中。
      

  9.   

    extern int color;
    这样的话是可以,但不能赋值。
    问题好像就是在窗口类中,选择单选按钮(可以是响应函数也可以是在"OnOK"中使用color = 1),但是还是赋值不了。
    如下:
    extern int  color;
    void COLOR::OnOK() 
    {

    // TODO: Add extra validation here

    UINT nGo = GetCheckedRadioButton(IDC_BLACK, IDC_WHITE);// 获得选择

    switch(nGo)
    {
    case IDC_BLACK: color   = 1;
    break;
      
    case IDC_WHITE:  color   = 2;
    break;

    }

    UpdateData(FALSE);
    CDialog::OnOK();
    }
      

  10.   

    你可以这样试试:
    在对话框类中定义一个视图指针:
    C##View *m_view;
    对话框中的按钮:void COLOR::OnRed()
    {
    m_view->color=1; 
    }
    //其他一样而在视图类的颜色按钮对应的代码中这样调用:COLOR dlg;//定义对话框
    dlg.m_view=this;//把当前视图指针个m_view;
    dlg.DoModal();其实,你既然要做颜色,又干嘛这么麻烦才用了这三种颜色,为什么不直接调用颜色对话框,那样既简单又有种颜色让你选择。