日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

深入浅出MFC-侯俊杰

發布時間:2023/12/9 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 深入浅出MFC-侯俊杰 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
  • ?
  • MFC六大特點
  • ■ MFC 程序的初始化過程

    ■ RTTI(Runtime Type Information)執行時期型別信息

    DECLARE_DYNAMIC?

    struct CRuntimeClass
    {
    // Attributes
    ?? ?LPCSTR m_lpszClassName;
    ?? ?int m_nObjectSize;
    ?? ?UINT m_wSchema; // schema number of the loaded class
    ?? ?CObject* (PASCAL* m_pfnCreateObject)(); // NULL => abstract class
    #ifdef _AFXDLL
    ?? ?CRuntimeClass* (PASCAL* m_pfnGetBaseClass)();
    #else
    ?? ?CRuntimeClass* m_pBaseClass;
    #endif

    // Operations
    ?? ?CObject* CreateObject();
    ?? ?BOOL IsDerivedFrom(const CRuntimeClass* pBaseClass) const;

    ?? ?// dynamic name lookup and creation
    ?? ?static CRuntimeClass* PASCAL FromName(LPCSTR lpszClassName);
    ?? ?static CRuntimeClass* PASCAL FromName(LPCWSTR lpszClassName);
    ?? ?static CObject* PASCAL CreateObject(LPCSTR lpszClassName);
    ?? ?static CObject* PASCAL CreateObject(LPCWSTR lpszClassName);

    // Implementation
    ?? ?void Store(CArchive& ar) const;
    ?? ?static CRuntimeClass* PASCAL Load(CArchive& ar, UINT* pwSchemaNum);

    ?? ?// CRuntimeClass objects linked together in simple list
    ?? ?CRuntimeClass* m_pNextClass; ? ? ? // linked list of registered classes
    ?? ?const AFX_CLASSINIT* m_pClassInit;
    };

    ?

    ■ Dynamic Creation 動態生成

    ?DECLARE_DYNCREATE

    ■ Persistence 永續留存

    ■ Message Mapping 消息映射

    ?消息映射表作法,把消息和其處理例程關聯起來,將消息與表格中的元素比對,然后
    調用對應的處理例程,這種動作我們也稱之為消息映射(Message Mapping)。

    注意:CWinThread 并不屬于消息流動網的一份,父類消息映射表填CCmdTarget

    ■ Message Routing 消息繞行

    ?3. MFC的生死因果

    注意:應用程序一定要改寫虛擬函數InitInstance,因為它在CWinApp 中只是個空函數,
    沒有任何內建(預設)動作 ;

    CFrameWnd::Create 在產生窗口之前,會先引發窗口類別的注冊動作

    請注意,如果類別的成員函數是一個callback 函數, 你必須聲明它為"static",才能把
    C++ 編譯器加諸于函數的一個隱藏參數this 去掉(請看方塊批注)。?

    Application framework classes

    這一部份最為人認知的便是Document/View,這也是使MFC 躋身application framework 的關鍵。Document/View 的觀念是希望把資料的本體,和資料的顯像分開處理。由于文 件產生之際,必須動態生成Document/View/Frame 三種對象,所以又必須有所謂的 Document Template 管理之。

    ■ CDocTemplate、CSingleDocTemplate、CMultiDocTemplate - Document Template 扮演 黏膠的角色,把Document 和View 和其Frame(外框窗口)膠黏在一塊兒。

    ■ CSingleDocTemplate 一次只支持一種文件類型,CMultiDocTemplate 可同時支持多 種文件類型。注意,這和MDI 程序或SDI 程序無關,換句話說,MDI 程序 也可以使用CSingleDocTemplate,SDI 程序也可以使用CMultiDocTemplate。

    總結

    以上是生活随笔為你收集整理的深入浅出MFC-侯俊杰的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。