zoukankan      html  css  js  c++  java
  • 基于MFC的单文档,多文档,对话框应用程序

    从类的角度区分

    基于对话框(3个类):

    • CAboutDlg
    • 程序名App
    • 程序名Dlg

    单文档(5个类):

    • CAboutDlg
    • CMainFrame
    • 程序名App
    • 程序名Doc
    • 程序名View

    多文档(6个类):

    • CAboutDlg
    • CMainFrame
    • 程序名App
    • 程序名Doc
    • 程序名View
    • CChildFrame

     -------------------------------------------------------------------------------

    多文档

    CAboutDlg(“关于”对话框)

          CAboutDlg()

          DoDataExchange(CDataExchange* pDX)

    CChildFrame(子框架类)

          AssertValid()

          CChildFrame()

          ~CChildFrame()

          Dump(CDumpContext& dc)

          PreCreateWindow(CREATESTRUCT& cs)

    CMainFrame(主框架类)

          AssertValid()

          CMainFrame()

          ~CMainFrame()

          Dump(CDumpContext& dc)

          OnCreate(LPCREATESTRUCT lpCreateStruct)

          PreCreateWindow(CREATESTRUCT& cs)

          CStatusBar  m_wndStatusBar;

          CToolBar    m_wndToolBar;

    CMyApp(应用程序类)

          CMyApp()

          InitInstance()

          OnAppAbout()

    CMyDoc(文档类)

          AssertValid()

          CMyDoc()

          ~CMyDoc()

          Dump(CDumpContext& dc)

          OnNewDocument()

          Serialize(CArchive& ar)

    CMyView(视图类)

          AssertValid()

          CMyView()

          ~CMyView()

          Dump(CDumpContext& dc)

          GetDocument()

          OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)

          OnDraw(CDC* pDC)

          OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)

          OnPreparePrinting(CPrintInfo* pInfo)

          PreCreateWindow(CREATESTRUCT& cs)

    Golbals(全局)

        theApp      

    -------------------------------------------------------------------------------

    单文档

    CAboutDlg(“关于”对话框)

          CAboutDlg()

          DoDataExchange(CDataExchange* pDX)

    CMainFrame(主框架类)

          AssertValid()

          CMainFrame()

          ~CMainFrame()

          Dump(CDumpContext& dc)

          OnCreate(LPCREATESTRUCT lpCreateStruct)

          PreCreateWindow(CREATESTRUCT& cs)

          CStatusBar  m_wndStatusBar;

          CToolBar    m_wndToolBar;

    CMyApp(应用程序类)

          CMyApp()

          InitInstance()

          OnAppAbout()

    CMyDoc(文档类)

          AssertValid()

          CMyDoc()

          ~CMyDoc()

          Dump(CDumpContext& dc)

          OnNewDocument()

          Serialize(CArchive& ar)

    CMyView(视图类)

          AssertValid()

          CMyView()

          ~CMyView()

          Dump(CDumpContext& dc)

          GetDocument()

          OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)

          OnDraw(CDC* pDC)

          OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)

          OnPreparePrinting(CPrintInfo* pInfo)

          PreCreateWindow(CREATESTRUCT& cs)

    Golbals(全局)

        theApp

    -------------------------------------------------------------------------------

    对话框

    CAboutDlg(“关于”对话框)

          CAboutDlg()

          DoDataExchange(CDataExchange* pDX)

    CMyApp(应用程序类)

          CMyApp()

          InitInstance()

    CMyDlg(对话框类)

          CMyDlg(CWnd* pParent /*=NULL*/)

          DoDataExchange(CDataExchange* pDX)

          OnInitDialog()

          OnPaint()

          OnQueryDragIcon()

          OnSysCommand(UINT nID, LPARAM lParam)

          HICON m_hIcon;

    Golbals(全局)

        theApp

    -------------------------------------------------------------------------------

    CXXXApp是应用程序类,负责程序的启动和结束
    CXXXDlg是主对话框类,程序的主界面。

    单文档就是一个窗口只能处理一个文档,多文档就是同时可以处理多个,共享工具栏,菜单栏什么的,对话框就是一个提示用户进行选择或者确认的窗体。对话框模板适合于做交互界面,单文档模板适合于做文件处理,多文档模板适合于做多文件处理。不过,还是没法明确这个问题。

    对话框模板适合于做交互界面
    单文档模板适合于做文件处理
    多文档模板适合于做多文件处理

    单文档程序打开多个文件会产生多个进程;
    多文档程序打开多个文件只需一个进程。

    单文档只能进行一份文档或图片的操作,就是你不能同时在一个程序打开两个文件
    多文档可以用多个窗口显示不同的信息,进行不同的任务,有多个视图环境,可以同时操作多个文件

  • 相关阅读:
    P4781 【模板】拉格朗日插值
    P1306 斐波那契公约数
    P1154 奶牛分厩
    P1028 数的计算
    P1445 [Violet]樱花
    2020 Multi-University Training Contest 4
    Codeforces Round #658 (Div. 2) D
    2020牛客暑期多校训练营(第八场) K
    Codeforces Round #659 (Div. 2)
    #10106. 「一本通 3.7 例 2」单词游戏
  • 原文地址:https://www.cnblogs.com/MrYuan/p/5660948.html
Copyright © 2011-2022 走看看