📄 cobject类 动态类原理.mht
字号:
name=3Dbaidusnap1></A><B=20
style=3D"COLOR: black; BACKGROUND-COLOR: =
#a0ffff">=B6=AF=CC=AC=C0=E0</B>=D0=C5=CF=A2=A1=A2=B6=AF=CC=AC=B4=B4=BD=A8=
=A1=A2=D0=F2=C1=D0=BB=AF=D5=E2=C8=FD=B8=F6=B2=BB=CD=AC=B2=E3=B4=CE=CF=C2=B6=
=D4=B8=C3=BE=B2=CC=AC=B3=C9=D4=B1=B1=E4=C1=BF=B5=C4=B3=F5=CA=BC=BB=AF=C7=E9=
=BF=F6=A3=BA</FONT></P>
<P align=3Dcenter><FONT color=3D#3366ff size=3D3>=B1=ED3-1=20
=
=BE=B2=CC=AC=B3=C9=D4=B1=B1=E4=C1=BFclass##class_name=B5=C4=B3=F5=CA=BC=BB=
=AF</FONT></P>
<TABLE cellSpacing=3D1 cellPadding=3D7 width=3D497 border=3D1>
<TBODY>
<TR>
<TD vAlign=3Dtop width=3D"27%">
<P align=3Djustify><FONT color=3D#3366ff =
size=3D3>CRuntimeClass=B3=C9=D4=B1=B1=E4=C1=BF=20
</FONT></P></TD>
<TD vAlign=3Dtop width=3D"24%">
<P align=3Djustify><FONT color=3D#3366ff size=3D3><B=20
style=3D"COLOR: black; BACKGROUND-COLOR: =
#a0ffff">=B6=AF=CC=AC=C0=E0</B>=D0=C5=CF=A2 </FONT></P></TD>
<TD vAlign=3Dtop width=3D"25%">
<P align=3Djustify><FONT color=3D#3366ff =
size=3D3>=B6=AF=CC=AC=B4=B4=BD=A8 </FONT></P></TD>
<TD vAlign=3Dtop width=3D"24%">
<P align=3Djustify><FONT color=3D#3366ff =
size=3D3>=D0=F2=C1=D0=BB=AF </FONT></P></TD></TR>
<TR>
<TD vAlign=3Dtop width=3D"27%">
<P align=3Djustify><FONT color=3D#3366ff =
size=3D3>m_lpszClassName=20
</FONT></P></TD>
<TD vAlign=3Dtop width=3D"24%">
<P align=3Djustify><FONT color=3D#3366ff =
size=3D3>=C0=E0=C3=FB=D7=D6=B7=FB=B4=AE </FONT></P></TD>
<TD vAlign=3Dtop width=3D"25%">
<P align=3Djustify><FONT color=3D#3366ff =
size=3D3>=C0=E0=C3=FB=D7=D6=B7=FB=B4=AE </FONT></P></TD>
<TD vAlign=3Dtop width=3D"24%">
<P align=3Djustify><FONT color=3D#3366ff =
size=3D3>=C0=E0=C3=FB=D7=D6=B7=FB=B4=AE </FONT></P></TD></TR>
<TR>
<TD vAlign=3Dtop width=3D"27%">
<P align=3Djustify><FONT color=3D#3366ff size=3D3>m_nObjectSize =
</FONT></P></TD>
<TD vAlign=3Dtop width=3D"24%">
<P align=3Djustify><FONT color=3D#3366ff =
size=3D3>=C0=E0=B5=C4=B4=F3=D0=A1=A3=A8=D7=D6=BD=DA=CA=FD=A3=A9 =
</FONT></P></TD>
<TD vAlign=3Dtop width=3D"25%">
<P align=3Djustify><FONT color=3D#3366ff =
size=3D3>=C0=E0=B5=C4=B4=F3=D0=A1=A3=A8=D7=D6=BD=DA=CA=FD=A3=A9 =
</FONT></P></TD>
<TD vAlign=3Dtop width=3D"24%">
<P align=3Djustify><FONT color=3D#3366ff =
size=3D3>=C0=E0=B5=C4=B4=F3=D0=A1=A3=A8=D7=D6=BD=DA=CA=FD=A3=A9 =
</FONT></P></TD></TR>
<TR>
<TD vAlign=3Dtop width=3D"27%">
<P align=3Djustify><FONT color=3D#3366ff size=3D3>m_wShema =
</FONT></P></TD>
<TD vAlign=3Dtop width=3D"24%">
<P align=3Djustify><FONT color=3D#3366ff size=3D3>0xFFFF =
</FONT></P></TD>
<TD vAlign=3Dtop width=3D"25%">
<P align=3Djustify><FONT color=3D#3366ff size=3D3>0xFFFF =
</FONT></P></TD>
<TD vAlign=3Dtop width=3D"24%">
<P align=3Djustify><FONT color=3D#3366ff =
size=3D3>1=A1=A22=B5=C8=A3=AC=B7=C70 </FONT></P></TD></TR>
<TR>
<TD vAlign=3Dtop width=3D"27%">
<P align=3Djustify><FONT color=3D#3366ff =
size=3D3>m_pfnCreateObject=20
</FONT></P></TD>
<TD vAlign=3Dtop width=3D"24%">
<P align=3Djustify><FONT color=3D#3366ff size=3D3>NULL =
</FONT></P></TD>
<TD vAlign=3Dtop width=3D"25%">
<P align=3Djustify><FONT color=3D#3366ff =
size=3D3>=C0=E0=B5=C4=B3=C9=D4=B1=BA=AF=CA=FD</FONT></P>
<P align=3Djustify><FONT color=3D#3366ff size=3D3>CreateObject =
</FONT></P></TD>
<TD vAlign=3Dtop width=3D"24%">
<P align=3Djustify><FONT color=3D#3366ff =
size=3D3>=C0=E0=B5=C4=B3=C9=D4=B1=BA=AF=CA=FD</FONT></P>
<P align=3Djustify><FONT color=3D#3366ff size=3D3>CreateObject=20
</FONT></P></TD></TR>
<TR>
<TD vAlign=3Dtop width=3D"27%">
<P align=3Djustify><FONT color=3D#3366ff size=3D3>m_pBaseClass =
</FONT></P></TD>
<TD vAlign=3Dtop width=3D"24%">
<P align=3Djustify><FONT color=3D#3366ff =
size=3D3>=BB=F9=C0=E0=B5=C4CRuntimeClass=B1=E4=C1=BF=20
</FONT></P></TD>
<TD vAlign=3Dtop width=3D"25%">
<P align=3Djustify><FONT color=3D#3366ff =
size=3D3>=BB=F9=C0=E0=B5=C4CRuntimeClass=B1=E4=C1=BF=20
</FONT></P></TD>
<TD vAlign=3Dtop width=3D"24%">
<P align=3Djustify><FONT color=3D#3366ff =
size=3D3>=BB=F9=C0=E0=B5=C4CRuntimeClass=B1=E4=C1=BF=20
</FONT></P></TD></TR>
<TR>
<TD vAlign=3Dtop width=3D"27%">
<P align=3Djustify><FONT color=3D#3366ff =
size=3D3>m_pfnGetBaseClass=20
</FONT></P></TD>
<TD vAlign=3Dtop width=3D"24%">
<P align=3Djustify><FONT color=3D#3366ff =
size=3D3>=C0=E0=B5=C4=B3=C9=D4=B1=BA=AF=CA=FD</FONT></P>
<P align=3Djustify><FONT color=3D#3366ff size=3D3>_GetBaseClass =
</FONT></P></TD>
<TD vAlign=3Dtop width=3D"25%">
<P align=3Djustify><FONT color=3D#3366ff =
size=3D3>=C0=E0=B5=C4=B3=C9=D4=B1=BA=AF=CA=FD</FONT></P>
<P align=3Djustify><FONT color=3D#3366ff size=3D3>_GetBaseClass =
</FONT></P></TD>
<TD vAlign=3Dtop width=3D"24%">
<P align=3Djustify><FONT color=3D#3366ff =
size=3D3>=C0=E0=B5=C4=B3=C9=D4=B1=BA=AF=CA=FD</FONT></P>
<P align=3Djustify><FONT color=3D#3366ff size=3D3>_GetBaseClass=20
</FONT></P></TD></TR>
<TR>
<TD vAlign=3Dtop width=3D"27%">
<P align=3Djustify><FONT color=3D#3366ff size=3D3>m_pNextClass =
</FONT></P></TD>
<TD vAlign=3Dtop width=3D"24%">
<P align=3Djustify><FONT color=3D#3366ff size=3D3>NULL =
</FONT></P></TD>
<TD vAlign=3Dtop width=3D"25%">
<P align=3Djustify><FONT color=3D#3366ff size=3D3>NULL =
</FONT></P></TD>
<TD vAlign=3Dtop width=3D"24%">
<P align=3Djustify><FONT color=3D#3366ff size=3D3>NULL=20
</FONT></P></TD></TR></TBODY></TABLE>
<P align=3Dcenter><FONT color=3D#3366ff size=3D3></FONT></P>
<P align=3Djustify><FONT color=3D#3366ff=20
=
size=3D3>m_wSchema=C0=E0=D0=CD=CA=C7UINT=A3=AC=B6=A8=D2=E5=C1=CB=D0=F2=C1=
=D0=BB=AF=D6=D0=B1=A3=B4=E6=B6=D4=CF=F3=B5=BD=CE=C4=B5=B5=B5=C4=B3=CC=D0=F2=
=B5=C4=B0=E6=B1=BE=A1=A3=C8=E7=B9=FB=B2=BB=D2=AA=C7=F3=D6=A7=B3=D6=D0=F2=C1=
=D0=BB=AF=CC=D8=D0=D4=A3=AC=B8=C3=D3=F2=CE=AA0XFFFF=A3=AC=B7=F1=D4=F2=A3=AC=
=B2=BB=C4=DC=CE=AA0=A1=A3</FONT></P>
<P align=3Djustify><FONT color=3D#3366ff=20
=
size=3D3>Cobject=C0=E0=B1=BE=C9=ED=B5=C4=BE=B2=CC=AC=B3=C9=D4=B1=B1=E4=C1=
=BFclassCObject=B1=BB=B3=F5=CA=BC=BB=AF=CE=AA=A3=BA</FONT></P>
<P align=3Djustify><FONT color=3D#3366ff size=3D3>{ "CObject", =
sizeof(CObject),=20
0xffff, NULL, &CObject::_GetBaseClass, NULL };</FONT></P>
<P align=3Djustify><FONT color=3D#3366ff =
size=3D3>=B6=D4=B3=F5=CA=BC=BB=AF=C4=DA=C8=DD=BD=E2=CA=CD=C8=E7=CF=C2=A3=BA=
</FONT></P>
<P align=3Djustify><FONT color=3D#3366ff=20
=
size=3D3>=C0=E0=C3=FB=D7=D6=B7=FB=B4=AE=CA=C7=A1=B0CObject=A1=B1=A3=AC=C0=
=E0=B5=C4=B4=F3=D0=A1=CA=C7sizeof(CObject)=A3=AC=B2=BB=D2=AA=C7=F3=D6=A7=B3=
=D6=D0=F2=C1=D0=BB=AF=A3=AC=B2=BB=D6=A7=B3=D6=B6=AF=CC=AC=B4=B4=BD=A8=A1=A3=
</FONT></P>
<P align=3Djustify><FONT color=3D#3366ff size=3D3></FONT></P>
<LI><FONT color=3D#3366ff =
size=3D3>=B3=C9=D4=B1=BA=AF=CA=FDCreateObject </FONT>
<P> </P>
<P align=3Djustify><FONT color=3D#3366ff=20
=
size=3D3>=BB=D8=B9=CB3.2=BD=DA=A3=AC=B6=AF=CC=AC=B4=B4=BD=A8=B6=D4=CF=F3=CA=
=C7=CD=A8=B9=FD=D3=EF=BE=E4pRuntimeClass->CreateObject=CD=EA=B3=C9=B5=C4=
=A3=AC=BC=B4=B5=F7=D3=C3=C1=CBCRuntimeClass=D7=D4=BC=BA=B5=C4=B3=C9=D4=B1=
=BA=AF=CA=FD=A3=ACCreateObject=BA=AF=CA=FD=D3=D6=B5=F7=D3=C3m_pfnCreateOb=
ject=D6=B8=CF=F2=B5=C4=BA=AF=CA=FD=C0=B4=CD=EA=B3=C9=B6=AF=CC=AC=B4=B4=BD=
=A8=C8=CE=CE=F1=A3=AC=C8=E7=CF=C2=CB=F9=CA=BE=A3=BA</FONT></P>
<P align=3Djustify><FONT color=3D#3366ff size=3D3>CObject*=20
CRuntimeClass::CreateObject()</FONT></P>
<P align=3Djustify><FONT color=3D#3366ff size=3D3>{</FONT></P>
<P align=3Djustify><FONT color=3D#3366ff size=3D3>if =
(m_pfnCreateObject =3D=3D NULL)=20
//=C5=D0=B6=CF=BA=AF=CA=FD=D6=B8=D5=EB=CA=C7=B7=F1=BF=D5</FONT></P>
<P align=3Djustify><FONT color=3D#3366ff size=3D3>{</FONT></P>
<P align=3Djustify><FONT color=3D#3366ff size=3D3>TRACE(_T("Error: =
Trying to create=20
object which is not ")</FONT></P>
<P align=3Djustify><FONT color=3D#3366ff =
size=3D3>_T("DECLARE_DYNCREATE \nor=20
DECLARE_SERIAL: %hs.\n"),</FONT></P>
<P align=3Djustify><FONT color=3D#3366ff =
size=3D3>m_lpszClassName);</FONT></P>
<P align=3Djustify><FONT color=3D#3366ff size=3D3>return =
NULL;</FONT></P>
<P align=3Djustify><FONT color=3D#3366ff size=3D3>}</FONT></P>
<P align=3Djustify><FONT color=3D#3366ff =
size=3D3>//=BA=AF=CA=FD=D6=B8=D5=EB=B7=C7=BF=D5=A3=AC=BC=CC=D0=F8=B4=A6=C0=
=ED</FONT></P>
<P align=3Djustify><FONT color=3D#3366ff size=3D3>CObject* pObject =3D =
NULL;</FONT></P>
<P align=3Djustify><FONT color=3D#3366ff size=3D3>TRY</FONT></P>
<P align=3Djustify><FONT color=3D#3366ff size=3D3>{</FONT></P>
<P align=3Djustify><FONT color=3D#3366ff size=3D3>pObject =3D =
(*m_pfnCreateObject)();=20
//=B6=AF=CC=AC=B4=B4=BD=A8=B6=D4=CF=F3</FONT></P>
<P align=3Djustify><FONT color=3D#3366ff size=3D3>}</FONT></P>
<P align=3Djustify><FONT color=3D#3366ff size=3D3>END_TRY</FONT></P>
<P align=3Djustify><FONT color=3D#3366ff size=3D3>return =
pObject;</FONT></P>
<P align=3Djustify><FONT color=3D#3366ff size=3D3>}</FONT></P>
<P align=3Djustify><FONT color=3D#3366ff size=3D3></FONT></P>
<P align=3Djustify><FONT color=3D#3366ff size=3D3></FONT></P>
<LI><FONT color=3D#3366ff =
size=3D3>=B3=C9=D4=B1=BA=AF=CA=FDIsDerivedFrom </FONT>
<P> </P>
<P align=3Djustify><FONT color=3D#3366ff=20
=
size=3D3>=B8=C3=BA=AF=CA=FD=D3=C3=C0=B4=B0=EF=D6=FA=D4=CB=D0=D0=CA=B1=C5=D0=
=B6=A8=D2=BB=B8=F6=C0=E0=CA=C7=B7=F1=C5=C9=C9=FA=D3=DA=C1=ED=D2=BB=B8=F6=C0=
=E0=A3=AC=B1=BBCObject=B5=C4=B3=C9=D4=B1=BA=AF=CA=FDIsKindOf=BA=AF=CA=FD=CB=
=F9=B5=F7=D3=C3=A1=A3=C6=E4=CA=B5=CF=D6=C3=E8=CA=F6=C8=E7=CF=C2=A3=BA</FO=
NT></P>
<P align=3Djustify><FONT color=3D#3366ff=20
=
size=3D3>=C8=E7=B9=FB=B6=A8=D2=E5=C1=CB_AFXDLL=D4=F2=A3=AC=B3=C9=D4=B1=BA=
=AF=CA=FDIsDerivedFrom=B5=F7=D3=C3=B3=C9=D4=B1=BA=AF=CA=FDm_pfnGetBaseCla=
ss=D6=B8=CF=F2=B5=C4=BA=AF=CA=FD=C0=B4=CF=F2=C9=CF=D6=F0=B2=E3=B5=C3=B5=BD=
=BB=F9=C0=E0=B5=C4CRuntimeClass=C0=E0=D0=CD=B5=C4=BE=B2=CC=AC=B3=C9=D4=B1=
=B1=E4=C1=BF=A3=AC=D6=B1=B5=BD=C4=B3=B8=F6=BB=F9=C0=E0=B5=C4CRuntimeClass=
=C0=E0=D0=CD=B5=C4=BE=B2=CC=AC=B3=C9=D4=B1=B1=E4=C1=BF=BA=CD=B2=CE=CA=FD=D6=
=B8=B6=A8=B5=C4CRuntimeClass=B1=E4=C1=BF=D2=BB=D6=C2=BB=F2=D5=DF=D7=B7=D1=
=B0=B5=BD=D7=EE=C9=CF=B2=E3=CE=AA=D6=B9=A1=A3</FONT></P>
<P align=3Djustify><FONT color=3D#3366ff=20
=
size=3D3>=C8=E7=B9=FB=C3=BB=D3=D0=B6=A8=D2=E5_AFXDLL=A3=AC=D4=F2=CA=B9=D3=
=C3=B3=C9=D4=B1=B1=E4=C1=BFm_pBaseClass=BB=F9=C0=E0=B5=C4CRuntimeClass=C0=
=E0=D0=CD=B5=C4=BE=B2=CC=AC=B3=C9=D4=B1=B1=E4=C1=BF=A1=A3</FONT></P>
<P align=3Djustify><FONT color=3D#3366ff =
size=3D3>=B3=CC=D0=F2=C8=E7=CF=C2=CB=F9=CA=BE=A3=BA</FONT></P>
<P align=3Djustify><FONT color=3D#3366ff size=3D3>BOOL=20
CRuntimeClass::IsDerivedFrom(</FONT></P>
<P align=3Djustify><FONT color=3D#3366ff size=3D3>const CRuntimeClass* =
pBaseClass)=20
const</FONT></P>
<P align=3Djustify><FONT color=3D#3366ff size=3D3>{</FONT></P>
<P align=3Djustify><FONT color=3D#3366ff size=3D3>ASSERT(this !=3D =
NULL);</FONT></P>
<P align=3Djustify><FONT color=3D#3366ff =
size=3D3>ASSERT(AfxIsValidAddress(this,=20
sizeof(CRuntimeClass), FALSE));</FONT></P>
<P align=3Djustify><FONT color=3D#3366ff size=3D3>ASSERT(pBaseClass =
!=3D=20
NULL);</FONT></P>
<P align=3Djustify><FONT color=3D#3366ff=20
size=3D3>ASSERT(AfxIsValidAddress(pBaseClass, sizeof(CRuntimeClass),=20
FALSE));</FONT></P>
<P align=3Djustify><FONT color=3D#3366ff size=3D3></FONT></P>
<P align=3Djustify><FONT color=3D#3366ff size=3D3>// simple SI =
case</FONT></P>
<P align=3Djustify><FONT color=3D#3366ff size=3D3>const CRuntimeClass* =
pClassThis =3D=20
this;</FONT></P>
<P align=3Djustify><FONT color=3D#3366ff size=3D3>while (pClassThis =
!=3D=20
=
NULL)//=B4=D3=B1=BE=C0=E0=BF=AA=CA=BC=CF=F2=C9=CF=D6=F0=B8=F6=BB=F9=C0=E0=
=CB=D1=CB=F7</FONT></P>
<P align=3Djustify><FONT color=3D#3366ff size=3D3>{</FONT></P>
<P align=3Djustify><FONT color=3D#3366ff size=3D3>if (pClassThis =
=3D=3D=20
=
pBaseClass)//=C8=F4=CA=C7=
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -