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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值