📄 chap2_4.htm
字号:
<font SIZE="3"><p></font><font SIZE="3">控制类</font></font><font FACE="Times New Roman" SIZE="3"><font FACE="Times New Roman" SIZE="3"></p>
<p></font></font><font SIZE="3"><font SIZE="3">菜单类</font></font><font FACE="Times New Roman" SIZE="3"><font FACE="Times New Roman" SIZE="3"></p>
<p></font></font><font SIZE="3"><font SIZE="3">设备描述表</font></font><font FACE="Times New Roman" SIZE="3"><font FACE="Times New Roman" SIZE="3"></p>
<p></font></font><font SIZE="3"><font SIZE="3">绘画对象类</font></font><font FACE="Times New Roman" SIZE="3"><font FACE="Times New Roman" SIZE="3"></p>
<p></font></font><font SIZE="3"><font SIZE="3">通用类</font></font><font FACE="Times New Roman" SIZE="3"><font FACE="Times New Roman" SIZE="3"></p>
<p></font></font><font SIZE="3"><font SIZE="3">文件</font></font><font FACE="Times New Roman" SIZE="3"><font FACE="Times New Roman" SIZE="3"></p>
<p></font></font><font SIZE="3"><font SIZE="3">诊断</font></font><font FACE="Times New Roman" SIZE="3"><font FACE="Times New Roman" SIZE="3"></p>
<p></font></font><font SIZE="3"><font SIZE="3">异常</font></font><font FACE="Times New Roman" SIZE="3"><font FACE="Times New Roman" SIZE="3"></p>
<p></font></font><font SIZE="3"><font SIZE="3">收集</font></font><font FACE="Times New Roman" SIZE="3"><font FACE="Times New Roman" SIZE="3"></p>
<p></font></font><font SIZE="3"><font SIZE="3">模板收集</font></font><font FACE="Times New Roman" SIZE="3"><font FACE="Times New Roman" SIZE="3"></p>
<p></font></font><font SIZE="3"><font SIZE="3">其他支持类</font></font><font FACE="Times New Roman" SIZE="3"><font FACE="Times New Roman" SIZE="3"></p>
</font><p>OLE2</font><font SIZE="3"><font SIZE="3">类</font><font FACE="Times New Roman" SIZE="3"></p>
</font><p>OLE基类<font FACE="Times New Roman" SIZE="3"></p>
</font><p>OLE可视编辑包装程序类<font FACE="Times New Roman" SIZE="3"></p>
</font><p>OLE 可视编辑服务器程序类<font FACE="Times New Roman" SIZE="3"></p>
</font><p>OLE数据传输类<font FACE="Times New Roman" SIZE="3"></p>
</font><p>OLE<font SIZE="3">对话框类</font><font FACE="Times New Roman" SIZE="3"></p>
<p></font><font SIZE="3">其他</font></font><font FACE="Times New Roman" SIZE="3">OLE</font><font SIZE="3"><font SIZE="3">类</font><font FACE="Times New Roman" SIZE="3"></p>
<p></font><font SIZE="3">数据库类</font><font FACE="Times New Roman" SIZE="3"></p>
</font><b>
</blockquote>
<p><font SIZE="3"> </font><font FACE="Times New Roman" SIZE="3"></p>
<p></font><font SIZE="3">宏和全局函数</font></b></font><font FACE="Times New Roman" SIZE="3"></p>
<p></font><font SIZE="3">若某个函数或变量不是某个类的一个成员,那么它是一个全程函数或变量。</font><font FACE="Times New Roman" SIZE="3"></p>
<p>Microsoft</font><font SIZE="3">基本宏和全程函数提供以下功能:</font><font FACE="Times New Roman" SIZE="3"></p>
<blockquote>
<blockquote>
<font SIZE="3"><p></font><font SIZE="3">数据类型</font></font><font FACE="Times New Roman" SIZE="3"><font FACE="Times New Roman" SIZE="3"></p>
<p></font></font><font SIZE="3"><font SIZE="3">运行时刻对象类型服务</font></font><font FACE="Times New Roman" SIZE="3"><font FACE="Times New Roman" SIZE="3"></p>
<p></font></font><font SIZE="3"><font SIZE="3">诊断服务</font></font><font FACE="Times New Roman" SIZE="3"><font FACE="Times New Roman" SIZE="3"></p>
<p></font></font><font SIZE="3"><font SIZE="3">异常处理</font></font><font FACE="Times New Roman" SIZE="3"><font FACE="Times New Roman" SIZE="3"></p>
</font><p>CString</font><font SIZE="3"><font SIZE="3">格式化及信息框显示</font><font FACE="Times New Roman" SIZE="3"></p>
<p></font><font SIZE="3">消息映射</font><font FACE="Times New Roman" SIZE="3"></p>
<p></font><font SIZE="3">应用消息和管理</font><font FACE="Times New Roman" SIZE="3"></p>
<p></font><font SIZE="3">对象连接和嵌入(</font></font><font FACE="Times New Roman" SIZE="3">OLE</font><font SIZE="3"><font SIZE="3">)服务</font><font FACE="Times New Roman" SIZE="3"></p>
<p></font><font SIZE="3">标准命令和</font></font><font FACE="Times New Roman" SIZE="3">Windows IDs</p>
</blockquote>
</blockquote>
<p></font><font SIZE="3"><b><font SIZE="3"> </font><font FACE="Times New Roman" SIZE="3"></p>
<p></font><font SIZE="3">约定</b>:全程函数以“</font></font><font FACE="Times New Roman" SIZE="3">Afx</font><font SIZE="3">”为前缀,所有全程变量都是以“</font><font FACE="Times New Roman" SIZE="3">afx</font><font SIZE="3">”为前缀,宏不带任何特别前缀,但是全部大写。</font><font FACE="Times New Roman" SIZE="3"></p>
<p ALIGN="JUSTIFY"></font><font SIZE="3">常见的全局函数和宏有:</font><font FACE="Times New Roman" SIZE="3">AfxGetApp</font><font SIZE="3">,</font><font FACE="Times New Roman" SIZE="3">AfxGetMainWnd</font><font SIZE="3">,</font><font FACE="Times New Roman" SIZE="3">AfxMessageBox</font><font SIZE="3">,</font><font FACE="Times New Roman" SIZE="3">DEBUG_NEW</font><font SIZE="3">等,我们会在后面的章节中用到并对它们进行介绍。</font><font FACE="Times New Roman" SIZE="3"></p>
<p></font><font SIZE="3">从继承关系来看,又可将</font><font FACE="Times New Roman" SIZE="3">MFC</font><font SIZE="3">中的类分成两大类:大多数的</font><font FACE="Times New Roman" SIZE="3">MFC</font><font SIZE="3">类是从</font><font FACE="Times New Roman" SIZE="3">CObject</font><font SIZE="3">继承下来;另外一些类则不是从</font><font FACE="Times New Roman" SIZE="3">CObject</font><font SIZE="3">类继承下来,这些类包括:字符串类</font><font FACE="Times New Roman" SIZE="3">CString</font><font SIZE="3">,日期时间类</font><font FACE="Times New Roman" SIZE="3">CTime</font><font SIZE="3">,矩形类</font><font FACE="Times New Roman" SIZE="3">CRect</font><font SIZE="3">,点</font><font FACE="Times New Roman" SIZE="3">CPoint</font><font SIZE="3">等,它们提供程序辅助功能。</font><font FACE="Times New Roman" SIZE="3"></p>
<p></font><font SIZE="3">由于</font><font FACE="Times New Roman" SIZE="3">MFC</font><font SIZE="3">中大部分类是从</font><font FACE="Times New Roman" SIZE="3">CObject</font><font SIZE="3">继承下来的,</font><font FACE="Times New Roman" SIZE="3">CObject</font><font SIZE="3">类描述了几乎所有的</font><font FACE="Times New Roman" SIZE="3">MFC</font><font SIZE="3">中其他类的一些公共特性,因此我们有必要理解</font><font FACE="Times New Roman" SIZE="3">CObject</font><font SIZE="3">类。 </font><font FACE="Times New Roman" SIZE="3"></p>
<p></font><font SIZE="3">我们首先查看一下</font><font FACE="Times New Roman" SIZE="3">CObject</font><font SIZE="3">类的定义,</font><font FACE="Times New Roman" SIZE="3">CObject</font><font SIZE="3">类定义如下清单</font><font FACE="Times New Roman" SIZE="3">2.1</font><font SIZE="3">所示:</font><font SIZE="3" FACE="Times New Roman"></p>
<p></font><b><font SIZE="3"> </font><font SIZE="3" FACE="Times New Roman"></p>
<p></font><font SIZE="3"><font SIZE="3">清单</font></font><font FACE="Times New Roman" SIZE="3">2.1CObject</font><font SIZE="3">类的定义</font></b><font FACE="Times New Roman" SIZE="3"></p>
<p>// class CObject is the root of all compliant objects</p>
<p>class CObject</p>
<p>{</p>
<p>public:</p>
<p>// Object model (types, destruction, allocation)</p>
<p>virtual CRuntimeClass* GetRuntimeClass() const;</p>
<p>virtual ~CObject(); // virtual destructors are necessary</p>
<p>// Diagnostic allocations</p>
<p>void* PASCAL operator new(size_t nSize);</p>
<p>void* PASCAL operator new(size_t, void* p);</p>
<p>void PASCAL operator delete(void* p);</p>
<p>#if defined(_DEBUG) && !defined(_AFX_NO_DEBUG_CRT)</p>
<p>// for file name/line number tracking using DEBUG_NEW</p>
<p>void* PASCAL operator new(size_t nSize, LPCSTR lpszFileName, int nLine);</p>
<p>#endif</p>
<p>// Disable the copy constructor and assignment by default so you will get</p>
<p>// compiler errors instead of unexpected behaviour if you pass objects</p>
<p>// by value or assign objects.</p>
<p>protected:</p>
<p>CObject();</p>
<p>private:</p>
<p>CObject(const CObject& objectSrc); // no implementation</p>
<p>void operator=(const CObject& objectSrc); // no implementation</p>
<p>// Attributes</p>
<p>public:</p>
<p>BOOL IsSerializable() const;</p>
<p>BOOL IsKindOf(const CRuntimeClass* pClass) const;</p>
<p>// Overridables</p>
<p>virtual void Serialize(CArchive& ar);</p>
<p>// Diagnostic Support</p>
<p>virtual void AssertValid() const;</p>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -