急:怎样在调用的对话框中,获取视图指针?在单文档MFC程序模式下,我派生了一个对话框类,在对话框调用时,需要和视图的成员变量进行交互操作。在我的视图类中,有一成员变量,是指针数组模块类型的。它里面存放了所有需要操作的文件指针。对所有文件进行操作需要很长时间,所以我使用对话框显示进度条来反应操作进度,同时这个对话框又必须是模态调用。所以,我想把文件操作放到提示对话框中完成,但不知怎样获取视图的那个成员变量?望各位高手不吝赐教!

解决方案 »

  1.   

    你在对话框里加一个方法,传进一个CDC* , 对CDC*进行操作就行了.
      

  2.   

    #include "MainFrame.h"
    ((C**View)((CMainFrame *)AfxGetMainWnd())->GetActiveView())->yourvar;
    即可
      

  3.   

    #include "MainFrame.h"
    ((C**View *)((CMainFrame *)AfxGetMainWnd())->GetActiveView())->yourvar;
    上面写错了一点,呵呵,其中C**View为你的View的类名
      

  4.   

    如果一定要用模态对话框实现的话,试试下面的方法(有点复杂):1. 在模态对话框中:
    现获取视类的指针,然后向视类发送自定义消息 CM_START(CM_START 要预先定义),来通知视类开始文件操作。CFrameWnd *frm=(CFrameWnd*)AfxGetApp()->m_pMainWnd;
    CView *view=(CView*)frm->GetActiveView();
    ::SendMessage(view->m_hWnd,CM_START,0,0);
    //PostMessage(view->m_hWnd,CM_START,0,0);
    2. 在视类中:
    先建立消息映射,表明视类收到 自定义消息 CM_START 调用 进行文件操作的成员函数 OperateFile//也可以在虚函数 WindowProc 中处理
    ON_MESSAGE(CM_START, OperateFile)3. 在成员函数 OperateFile 中:
    先获取模态对话框的指针,以便同步视类与模态对话框的成员变量,
    开始文件操作,同时将进度在模态对话框中显示出来。CFrameWnd *frm=(CFrameWnd*)::AfxGetApp()->m_pMainWnd;
    Dialog2 *dg=(Dialog2*)frm->GetActiveWindow();
    //开始文件操作
    //将进度在模态对话框中显示出来