• 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应用程序就完成了启动过程,等待着用户的交互或者输入。

  • 相关阅读:
    关于iOS中页面启动加载的相关问题汇总
    文件上传与解析漏洞
    XSS跨站攻击
    SQL注入
    DOS&&Linux命令大全
    信息收集相关
    进制转化
    PYQT5 in Python
    将博客搬至CSDN
    Python报文操作模块scapy
  • 原文地址:https://www.cnblogs.com/riskyer/p/3258134.html
Copyright © 2020-2023  润新知