《VC++深入详解》学习笔记 第三章 MFC框架程序剖析(未完成)

来源:互联网 发布:数据结构算法与应用 编辑:程序博客网 时间:2024/07/24 01:53

1. 单文档窗口

(1)CAboutDlg

     void CAboutDlg::DoDataExchange(CDataExchange* pDX);

(2)CMainFrame

    变量:CStatusBar  m_wndStatusBar;

              CToolBar    m_wndToolBar;

函数:CMainFrame();

virtual ~CMainFrame();

          virtual BOOL PreCreateWindow(CREATESTRUCT& cs);

          afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);

(3)CTestApp

     全局变量:CTestApp theApp;

         函数:CTestApp();

               virtual BOOL InitInstance();

(4)CTestDoc

             virtual BOOL OnNewDocument();

                virtual void Serialize(CArchive& ar);

(5)CTestView

              CTestView();

              CTestDoc* GetDocument();

                  virtual void OnDraw(CDC* pDC);

                  virtual BOOL PreCreateWindow(CREATESTRUCT& cs);

                  virtual BOOL OnPreparePrinting(CPrintInfo* pInfo);

                  virtual void OnBeginPrinting(CDC* pDC, CPrintInfo* pInfo);

                  virtual void OnEndPrinting(CDC* pDC, CPrintInfo* pInfo);

2.theApp全局对象—CTestApp构造函数—WinMain函数

3.应用程序的实例由实例句柄标识,而对于MFC程序来说,通过产生一个应用程序类的对象来唯一标识这个程序的实例。每个MFC程序有且仅有一个从应用程序类(CWinApp)派生的类,而且有且仅有一个该派生类的实例化对象,就是theApp全局对象。

4. theApp(CTestApp—CWinApp)—AfxWinMain((WinMain)—pThread,pApp(完成窗口创建,消息循环,窗口过程))—InitInstance(CMainFrame)

5.CMainFrame类的对象创建程序框架窗口其中的PreCreateWindow(产生窗口之前修改窗口的外观)调用AfxEndDeferRegisterClass函数,注册窗口后,CWnd类中的CreateEx函数创建窗口,显示和更新窗口在CTestApp的InitInstance函数中

6.CWinThread类的Run函数完成消息循环(pThread)

7.消息映射机制

8.CTestView视类窗口(CWnd)

9.CTestDoc文档类(CDocument—CCmdTarget—CObject) //数据和显示分离。

10.以::(作用域标识符)开始的表示方法表明该函数是一个全局函数。(如:调用同名的Platform SDK函数)

11.C++窗口类对象和窗口不是一回事,他们之间唯一的关系是:C++窗口类对象内部定义了一个窗口句柄变量,保存了与这个C++窗口类对象相关的哪个窗口。(我的理解:类似指针和其指向的内存空间的关系)

12.CButton类(CWnd—CCmdTarget—CObject)

定义类对象—调用Create函数—ShowWindow。

按钮的父窗口不同,显示的位置也会有差异。