none
关于MFC MDI文档视图的疑问? RRS feed

  • 问题

  • 在MDI文档视图结构中,启动应用程序时打开四个不同的视图
    m_pTemplate1 = new CMultiDocTemplate(IDR_REPORT_TYPE,
      RUNTIME_CLASS(CReportDoc),
      RUNTIME_CLASS(CMDIChildWndEx),
      RUNTIME_CLASS(CReportView));
     if (!m_pTemplate1)
      return FALSE;
     AddDocTemplate(m_pTemplate1);
     ..............

     // 创建初始的视图
     m_pTemplate1->OpenDocumentFile(NULL);
     m_pTemplate2->OpenDocumentFile(NULL);
     m_pTemplate3->OpenDocumentFile(NULL);
     m_pTemplate4->OpenDocumentFile(NULL);

    有几个问题不明白:
     1.  主框架窗口MainFrm怎么得到指定的文档或视图指针(不是当前指针),然后给相应的文档视图发数据更新
     2.  视图之间如何通信,比如在一个视图里有一个列表,双击列表中的一项跳到其它文档管理的视图去
     3.  文档里是不是只放数据和方法?文档里要调用视图的方法怎么做?
     4. 如何切换当前视图,比如当前有一条新消息来时,程序自动从视图1切换到视图2


     希望MFC MDI的高手指点一下,非常感谢!!!



    2009年8月10日 8:49

答案

  • 在Visual C++文档中搜索TN021: Command and Message Routing


    Please mark the post answered your question as the answer, and mark other helpful posts as helpful.
    Visual C++ MVP
    • 已标记为答案 Tim Li 2009年8月14日 9:51
    2009年8月10日 18:48
    版主
  • MainFrame创建的窗口和普通的Windows dialog是一样的.视图之间通信可以使用发送消息的方法SendMessage.你上面的问题都可以通过发送消息来解决.比如激活窗口可以发送WM_ACTIVATE.
    0xBAADF00D
    • 已标记为答案 Tim Li 2009年8月14日 9:50
    2009年8月11日 6:52
    版主

全部回复

  • 在Visual C++文档中搜索TN021: Command and Message Routing


    Please mark the post answered your question as the answer, and mark other helpful posts as helpful.
    Visual C++ MVP
    • 已标记为答案 Tim Li 2009年8月14日 9:51
    2009年8月10日 18:48
    版主
  • MainFrame创建的窗口和普通的Windows dialog是一样的.视图之间通信可以使用发送消息的方法SendMessage.你上面的问题都可以通过发送消息来解决.比如激活窗口可以发送WM_ACTIVATE.
    0xBAADF00D
    • 已标记为答案 Tim Li 2009年8月14日 9:50
    2009年8月11日 6:52
    版主