嗔秤戻幣�哉膵�云利匈嬉蝕湊蛸賜�塋床四衲���萩晦編報炎嘔囚^泡仟 ̄云利匈��
源平慎弌傍利 卦指云慕朕村 紗秘慕禰 厘議慕尺 厘議慕禰 TXT畠云和墮 〆辺茄欺厘議箝誓匂〇

侮秘燃竃MFC及2井(PDF鯉塀)-及26何蛍

酔楯荷恬: 梓囚徒貧圭�鮗� ○ 賜 ★ 辛酔堀貧和鍬匈 梓囚徒貧議 Enter 囚辛指欺云慕朕村匈 梓囚徒貧圭�鮗� ● 辛指欺云匈競何! 泌惚云慕短嗤堋響頼���誅卒亮茂�俊彭堋響��辛聞喘貧圭 "辺茄欺厘議箝誓匂" 孔嬬 才 "紗秘慕禰" 孔嬬��





                                   4                               4                               4 



                            m_pfnCreateObject  NULL         m_pfnCreateObject  NULL         m_pfnCreateObject  NULL 



                              m_pNextClass                    m_pNextClass                    m_pNextClass 



                      NULL 



                        CFrameWnd�今�classCFrameWnd          CWnd�今�classCWnd               CWinApp�今�classCWinApp 



                              ^CFrameWnd ̄                        ^CWnd ̄                        ^CWinApp ̄ 



                                   12                              4                               4 



                            m_pfnCreateObject               m_pfnCreateObject               m_pfnCreateObject  NULL 



                              m_pNextClass                    m_pNextClass                    m_pNextClass 



                          CDocument�今�classCDocument        CView�今�classCView 



                              ^CDocument ̄                       ^CView ̄                     ��static 延楚�� 

                                   4                               4                        CRuntimeClass�今�pFirstClass 



                            m_pfnCreateObject  NULL         m_pfnCreateObject  NULL 



                              m_pNextClass                    m_pNextClass 



                      夕3´2 參CRuntimeClass 斤�鷙抗謬帖 言牘靜預射�々。云夕峪双竃嚥強蓑 



                             伏撹 ��Dynamic Creation��嗤購狼議撹埀。群頁m_pfnCreateObject 



                     音葎NULL 宀��  軸辛強蓑伏撹。 



                     �嶬擅�厘断蝕兵径寔強蓑伏撹。遍枠壓main  痕方嶄紗貧宸匯粁鷹�此�



                     void main�┌� 

                     �� 

                       。。。 

                       //Test Dynamic Creation 

                       CRuntimeClass* pClassRef�察�

                       CObject* pOb�察�

                       while��1�� 

                       �� 



148 


´´´´´´´´´´´´´´´´´´´´´´Page 211´´´´´´´´´´´´´´´´´´´´´´´

                                                         及3嫗    MFC 鎗寄�P�I室�g岻庁�M 



    if �┌�pClassRef = CRuntimeClass�今�Load�┌��� == NULL�� 

        break�察�



    pOb = pClassRef´〃CreateObject�┌��察�

    if ��pOb ��= NULL�� 

        pOb´〃SayHello�┌��察�

  �� 

�� 



 旺譜柴 

               CRuntimeClass CreateObj ect  CRuntimeClass  Load 

                       �今此            〆諭               。今此     “脾此�



// in implementation file 

CObject* CRuntimeClass�今�CreateObject�┌� 

�� 

        if ��m_pfnCreateObject == NULL�� 

        �� 

                TRACE1�─�Error�此�Trying to create object which is not ; 

                         ;DECLARE_DYNCREATE nor DECLARE_SERIAL�此。�hs。n;�察�

                          m_lpszClassName���察�

                return NULL�察�

        �� 



        CObject* pObject = NULL�察�

        pObject = ��*m_pfnCreateObject���┌��察�



        return pObject�察�

�� 



CRuntimeClass* PASCAL CRuntimeClass�今�Load�┌� 

�� 

        char szClassName��64�В察�

        CRuntimeClass* pClass�察�

        // JJHOU �此�instead of Load from file�察�we Load from cin。 

        cout 〃 szClassName�察�



        for ��pClass = pFirstClass�察�pClass ��= NULL�察�pClass = pClass´〃m_pNextClass�� 

        �� 

                if ��strcmp��szClassName�察�pClass´〃m_lpszClassName�� == 0�� 

                        return pClass�察�

        �� 



        TRACE1�─�Error�此�Class not found�此。�s n;�察�szClassName���察�

        return NULL�察�// not found 

�� 



                                                                                                149 


´´´´´´´´´´´´´´´´´´´´´´Page 212´´´´´´´´´´´´´´´´´´´´´´´

                  及鐙  齢壓検桧�B互岬 



                  隼朔��葎阻刮屬宸劔議強蓑伏撹字崙議鳩嗤丼��匆祥頁斤�鶺槌訓参�伏阻����厘斑俯謹 



                  倖窃艶議更夛塀脅補竃匯粁猟忖��遇拝壓函誼斤�黏胡觝鵤�寔議肇距喘乎斤�鶺漬燦�撹 



                  埀痕方SayHello 。厘委SayHello 譜柴葎倡亭痕方��侭參功象音揖議斤�鸚猥唯�氏距喘 



                  欺音揖議SayHello  痕方��竃�峅四�議補竃忖憲堪。 



                  萩廣吭��main  痕方嶄議while 儉桟駅倬吉欺CRuntimeClass�今�Load 勧指NULL 嘉氏唯 



                  峭��遇CRuntimeClass�今�Load  頁壓万貫屁倖仝窃艶侏村利々嶄孀音欺万勣孀議椎倖窃艶 



                  兆各扮��嘉勧指NULL 。宸乂脅頁厘葎阻径寔嚥幣袈��侭寡函議幡卷譜柴。 



                  Frame6  議凋綜双園咎選潤強恬頁�┿珪咳篩娠慚誅班莇┷達�萩歌深及4嫗議仝芦廾嚥譜 



                  協々匯准���此�



                              cl my。cpp mfc。cpp  



                  和中頁Frame6  議峇佩潤惚。間悶燕幣厘�┳茂鰆莞侖滷�壓徳鳥貧補秘議窃艶兆各�此�



                  enter a class name。。。  CObject 

                  Error�此�Trying to create object which is not DECLARE_DYNCREATE 

                  or DECLARE_SERIAL�此�CObject。 



                  enter a class name。。。  CView 

                  Error�此�Trying to create object which is not DECLARE_DYNCREATE 

                  or DECLARE_SERIAL�此�CView。 



                  enter a class name。。。  CMyView 

                  CWnd Constructor 

                  CMyView Constructor 

                  Hello CMyView 



                  enter a class name。。。  CMyFrameWnd 

                  CWnd Constructor 

                  CFrameWnd Constructor 

                  CMyFrameWnd Constructor 

                  Hello CMyFrameWnd 



                  enter a class name。。。  CMyDoc 

                  CMyDoc Constructor 

                  Hello CMyDoc 



150 


´´´´´´´´´´´´´´´´´´´´´´Page 213´´´´´´´´´´´´´´´´´´´´´´´

                                                      及3嫗    MFC 鎗寄�P�I室�g岻庁�M 



      enter a class name。。。  CWinApp 

      Error�此�Trying to create object which is not DECLARE_DYNCREATE 

      or DECLARE_SERIAL�此�CWinApp。 



      enter a class name。。。 CJjhou  �┨片睚簇誨燦�音壓仝窃艶侏村利々嶄議窃艶兆各�� 



      Error�此�Class not found�此�CJjhou  �┳茂鮟疂��� 



Frame6  袈箭殻會 



      MFC。H 



      #0001  #define BOOL int 

      #0002  #define TRUE 1 

      #0003  #define FALSE 0 

      #0004  #define LPCSTR  LPSTR 

      #0005  typedef char*   LPSTR�察�

      #0006  #define UINT int 

      #0007  #define PASCAL _stdcall 

      #0008  #define TRACE1 printf 

      #0009 

      #0010  #include  

      #0011  #include  

      #0012  #include  

      #0013 

      #0014  class CObject�察�

      #0015 

      #0016  struct CRuntimeClass 

      #0017  �� 

      #0018  // Attributes 

      #0019     LPCSTR m_lpszClassName�察�

      #0020     int m_nObjectSize�察�

      #0021     UINT m_wSchema�察�// schema number of the loaded class 

      #0022     CObject* ��PASCAL* m_pfnCreateObject���┌��察�// NULL =〃 abstract class 

      #0023     CRuntimeClass* m_pBaseClass�察�

      #0024 

      #0025     CObject* CreateObject�┌��察�

      #0026     static CRuntimeClass* PASCAL Load�┌��察�

      #0027 

      #0028     // CRuntimeClass objects linked together in simple list 

      #0029     static CRuntimeClass* pFirstClass�察�// start of class list 

      #0030     CRuntimeClass* m_pNextClass�察   �// linked list of registered classes 

      #0031  ���察�

      #0032 

      #0033  struct AFX_CLASSINIT 



                                                                                       151 


´´´´´´´´´´´´´´´´´´´´´´Page 214´´´´´´´´´´´´´´´´´´´´´´´

                    及鐙  齢壓検桧�B互岬 



                    #0034          �� AFX_CLASSINIT��CRuntimeClass* pNewClass���察。��察�

                    #0035 

                    #0036  #define RUNTIME_CLASS��class_name��  

                    #0037          ��&class_name�今�class##class_name�� 

                    #0038 

                    #0039  #define DECLARE_DYNAMIC��class_name��  

                    #0040  public�此 �

                    #0041          static CRuntimeClass class##class_name�察 �

                    #0042          virtual CRuntimeClass* GetRuntimeClass�┌� const�察�

                    #0043 

                    #0044  #define DECLARE_DYNCREATE��class_name��  

                    #0045          DECLARE_DYNAMIC��class_name��  

                    #0046          static CObject* PASCAL CreateObject�┌��察�

                    #0047 

                    #0048  #define _IMPLEMENT_RUNTIMECLASS��class_name�察�base_class_name�察�wSchema�察�pfnNew��  

                    #0049          static char _lpsz##class_name�ВА�= #class_name�察 �

                    #0050          CRuntimeClass class_name�今�class##class_name = ��  

                    #0051                  _lpsz##class_name�察�sizeof��class_name���察�wSchema�察�pfnNew�察 �

                    #0052                          RUNTIME_CLASS��base_class_name���察�NULL ���察 �

                    #0053          static AFX_CLASSINIT _init_##class_name��&class_name�今�class##class_name���察 �

                    #0054          CRuntimeClass* class_name�今�GetRuntimeClass�┌� const  

                    #0055                  �� return &class_name�今�class##class_name�察。�  

                    #0056 

                    #0057  #define IMPLEMENT_DYNAMIC��class_name�察�base_class_name��  

                    #0058          _IMPLEMENT_RUNTIMECLASS��class_name�察�base_class_name�察�0xFFFF�察�NULL�� 

                    #0059 

                    #0060  #define IMPLEMENT_DYNCREATE��class_name�察�base_class_name��  

                    #0061          CObject* PASCAL class_name�今�CreateObject�┌�  

                    #0062                  �� return new class_name�察。�  

                    #0063          _IMPLEMENT_RUNTIMECLASS��class_name�察�base_class_name�察�0xFFFF�察 �

                    #0064                  class_name�今�CreateObject�� 

                    #0065 

                    #0066  class CObject 

                    #0067  �� 

                    #0068  public�此�

                    #0069    CObject�今�CObject�┌�  �� 

                    #0070                           �� 

                    #0071    CObject�今�~CObject�┌� �� 

                    #0072                            �� 

                    #0073 

                    #0074    virtual CRuntimeClass* GetRuntimeClass�┌� const�察�

                    #0075    BOOL IsKindOf��const CRuntimeClass* pClass�� const�察�

                    #0076 

                    #0077  public�此�

                    #0078    static CRuntimeClass classCObject�察�

                    #0079    virtual void SayHello�┌� �� cout 
卦指朕村 貧匯匈 和匯匈 指欺競何 壘��9�� 家��10��
酔楯荷恬: 梓囚徒貧圭�鮗� ○ 賜 ★ 辛酔堀貧和鍬匈 梓囚徒貧議 Enter 囚辛指欺云慕朕村匈 梓囚徒貧圭�鮗� ● 辛指欺云匈競何!
梁椣戻幣�� 梁心弌傍議揖扮窟燕得胎��傍竃徭失議心隈才凪万弌誌育断蛍�輌臆惨軼僑〃�燕慕得珊辛參資誼持蛍才将刮襲潜��範寔亟圻幹慕得 瓜寡追葎娼得辛參資誼寄楚署衛、持蛍才将刮襲潜填��