在vc++6.0中,用mfc向导建立了一个单文档的程序点击一个菜单后,弹出一个对话框,在对话框上设置完红,绿,黑三原色后,如何将这三个数据传到视图中去,以改变在视图中所画图形的颜色?

解决方案 »

  1.   

    在视图类中加成员COLORREF color;CMyDialog dlg;
    if(IDOK==dlg.DoModal())
    {
     color=dlg.
    }
    你可以用:CColorDialog dlg;
    if(IDOK==dlg.DoModal())
    color=dlg.GetColor();
      

  2.   

    如果菜单不是在你的View里面显示的,可以借助全局变量或者用自定义消息的方法
    1.全局变量
      在CYourApp类中添加public成员变量 COLORREF m_crView;
      对话框里面 (CYourApp*)AfxGetApp()->m_crView = ...
      视图里面 COLORREF color = (CYourApp*)AfxGetApp()->m_crView;
    2.自定义消息
      在Dialog里面 SendMessage(hWndView, YOUR_MESSAGE, m_crView, 0);
      View的h中: afx_msg void OnYourMessage(WPARAM wParam, LPARAM lParam);
      View的cpp中: ON_MESSAGE(YOUR_MESSAGE, OnYourMessage)
      CYourView::OnYourMessage(WPARAM wParam, LPARAM lParam)
      {
        COLORREF color = wParam;
        ...
      

  3.   

    传到视图!你无非是想在OnDraw;里重画的时候使用到这个颜色!我觉得你还是用he_zhidan(我的QQ154168835的方法比较好,在你的对话框类里加一个返回类型为COLORREF 的函数,用作将设置的颜色返回,
    那么你在视图类就可以通对对象调用这个函数了。