嗔秤戻幣�哉膵�云利匈嬉蝕湊蛸賜�塋床四衲���萩晦編報炎嘔囚^泡仟 ̄云利匈��
侮秘燃竃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
酔楯荷恬: 梓囚徒貧圭�鮗� ○ 賜 ★ 辛酔堀貧和鍬匈 梓囚徒貧議 Enter 囚辛指欺云慕朕村匈 梓囚徒貧圭�鮗� ● 辛指欺云匈競何!
梁椣戻幣�� 梁心弌傍議揖扮窟燕得胎��傍竃徭失議心隈才凪万弌誌育断蛍�輌臆惨軼僑〃�燕慕得珊辛參資誼持蛍才将刮襲潜��範寔亟圻幹慕得 瓜寡追葎娼得辛參資誼寄楚署衛、持蛍才将刮襲潜填��