即:在CMyView中定义了一个CString变量,如何在菜单选择的对话框中获得这个CString变量值?xiexie.最好不用全局变量的方法。

解决方案 »

  1.   

    将菜单的响应函数放在CMyView中就可以了吧。
    然后在响应函数中定义自己想要调用的对话框CMyDlg dlg;
    假定CMyDlg中有个变量CString str,它存放view中传过来的变量
    则dlg.str=CMyView中的字符中变量.这样应该可以了
      

  2.   

    我的菜单响应是这样的:void CMyView::OnClickDlg()
    {
        CMyDialog dlg;
        if(dlg.DoModal() == IDOK)
        {
             .....  // 得到dlg中的值
        }
    }这样怎么将CMyView中的str输入到dlg中呢?
      

  3.   

    这是很老的一个问题了,很多人问类似的问题,常用的方法是修改CMyDialog的构造函数,改成大致这样:CMyDialog::CMyDialog(CView *pView,...);将视图类的指针传给对话框,利用这个指针来引用视图类的成员.定义变量时可以写作CMyDialog dlg(this);
      

  4.   

    public:static  COpenGLView  *GetView();
    COpenGLView *COpenGLView::GetView()
    {
    CFrameWnd  *pFrame=(CFrameWnd*)(AfxGetApp()->m_pMainWnd);
    return (COpenGLView*) pFrame->GetActiveView();
    }视图类中定你静态成员函数GetView,然后获得视类指针然后再对话框的按钮中引用
    void CCommonControlDlg::OnButton4() 
    {
    // TODO: Add your control notification handler code here
    COpenGLView  *pView=COpenGLView::GetView();
    pView->youhua();
    }我就是这样搞定的,别的方法不会用,如果在对话框中取得文档的指针,方法也一样