zoukankan      html  css  js  c++  java
  • MFC中SDI程序创建流程的回顾

    SDI程序创建流程的回顾 

    从CWinApp.InitialInstance()开始,
    1.首先应用程序对象创建文档模板;
    CSingleDocTemplate* pDocTemplate;
    pDocTemplate = new CSingleDocTemplate(
    IDR_MAINFRAME,
    RUNTIME_CLASS(CSDICoinDoc),
    RUNTIME_CLASS(CMainFrame),       // main SDI frame window
    RUNTIME_CLASS(CSDICoinView));
    2.文档模板创建文档对象、打开或创建文件;
    CCommandLineInfo cmdInfo;  //处理命令行信息类
        enum { FileNew, FileOpen, FilePrint, FilePrintTo, FileDDE,AppUnregister, FileNothing = -1 } nShellCommand;  //7种动作类型


        CCommandLineInfo::CCommandLineInfo()  //CCommandLineInfo类的默认构造函数
       {
    m_bShowSplash = TRUE;
    m_bRunEmbedded = FALSE;
    m_bRunAutomated = FALSE;
    m_nShellCommand = FileNew;//指定了SHELL命令操作(默认动作)
        }   

    ParseCommandLine(cmdInfo);  //根据上面的nShellCommand值,调用CWinApp::ProcessShellCommand()执行相应的动作
          FILENEW--->OnFileNew();
          FILEOPEN--->OpenDocumentFile();
          FilePrint, FilePrintTo--->......  
          FileDDE--->...
          AppUnregister--->...
          ....


    3.文档模板创建边框窗口对象和边框窗口;
    4.接着边框窗口对象创建视对象和视窗口。


     下面以FILENEW动作为例,详解创建过程:
      a.调用文档模板管理器的成员函数OnFileNew(m_pDocManager->OnFileNew());
      b.模板管理器获取文档模板对象指针,调用文档模板对象的OpenDocumentFile 函数(pTemplate->OpenDocumentFile(NULL))。
      c.如果模板管理器发现有多个文档模板,就弹出一个对话框让用户选择文档模板。
      d.CSingleDocTemplate::OpenDocumentFile();
         //创建文档类
        CDocument* pDocument = CreateNewDocument();
        //创建框架类
        CFrameWnd* pFrame = CreateNewFrame(pDocument, NULL);
      e.调用CFrameWnd的虚拟函数InitialUpdateFrame完成窗口初始化;


    这些创建是以应用程序的文档模板为中心进行的。在创建这些MFC对象的同时,建立了它们之间的关系。创建这些之后,进行初始化,激活主边框窗口,把边框窗口、视窗口显示出来。

    这样,一个SDI应用程序就完成了启动过程,等待着用户的交互或者输入。

  • 相关阅读:
    print流
    java数据流
    java转换流
    爬虫(二):urllib库文件的基础和进阶(python2.7)
    爬虫实例(二):多线程,多进程对网页的爬取
    Java多线程分析 (二)---- 高并发内存模型和线程安全
    Java多线程分析 (五)---高并发线程池
    Java 多线程分析 (四) ---高并发基础知识)
    Java(生产者与消费者方法)
    Java 多线程分析 (三) --- synchronize 同步
  • 原文地址:https://www.cnblogs.com/riskyer/p/3258134.html
Copyright © 2011-2022 走看看