MFC中注释含义

下面是 CStdioFile 类的部分列表,其中使用了 MFC 在其类中按类成员的用法划分它们时所采用的大多数标准注释 程序员

class CStdioFile : public CFile { DECLARE_DYNAMIC(CStdioFile) public: // Constructors
 CStdioFile(); ... // Attributes
FILE* m_pStream;    // stdio FILE
... // Operations
virtual void WriteString(LPCTSTR lpsz); ... virtual LPTSTR ReadString(LPTSTR lpsz, UINT nMax); ... // Implementation

public: ... };

这些注释以一致的方式标记包含类型类似的类成员的类声明节。注意,这些注释是 MFC 约定,不是固定规则。 安全

使用 MFC 源文件函数

Microsoft 基础类 (MFC) 库提供了完整的源代码。头文件 (.h) 位于 \atlmfc\include 目录中,而实现文件 (.cpp) 位于 \atlmfc\src\mfc 目录中spa

注意   \atlmfc\src\mfc 目录包含一个生成文件,该文件可与 NMAKE 一块儿使用以生成 MFC 库版本(包括浏览版本)。MFC 的浏览版本对于经过 MFC 调用结构自己进行跟踪很是有用。该目录中的 Readme.Txt 文件解释了如何使用今生成文件。code

本文解释 MFC 用于注释每一个类各部分的约定、这些注释的含义以及在每节中应该能够找到的内容。Visual C++ 向导对其建立的类使用相似的约定,您可能会发现这些约定对于您本身的代码颇有用。对象

您可能已经熟悉 public、protected 和 private C++ 关键字。当查看 MFC 头文件时,您会发现每一个类均可能具备上述每种关键字的几个。例如,公共成员变量和函数可能在多个 public 关键字之下。这是由于 MFC 基于成员变量和函数的使用而非容许的访问类型来分隔它们。MFC 对 private 的使用很保守;即便是被视为实现详细信息的项一般都受保护,但不少时候它们是公共的。尽管不鼓励访问实现详细信息,但 MFC 将决定权留给您。blog

在 MFC 源文件和“MFC 应用程序向导建立的文件中,在类声明中均可以找到相似下面的注释(一般按此顺序):事件

// Constructorsit

// Attributes自动化

// Operations

// Overridables

// Implementation

// Implementation /implimen'teiʃən/ n实现

// Implementation 节是任何 MFC 类声明中最重要的部分。

此节包括全部的实现详细信息。成员变量和成员函数均可以出如今此节中。在未来的 MFC 版本中,该行下面的全部内容均可能更改。不该依赖 // Implementation 行下的详细信息,除非只能这样作。另外,未记录在实现行下声明的成员,但在技术说明中讨论了某些实现。不管基类中的虚函数是在哪一节中定义的,该基类函数的重写都包括在本节中,由于函数重写基类实现这一事实被视为实现详细信息。这些成员一般是受保护的,但并不是老是如此。

从注释示例下的 CStdioFile 列表中能够看到,在 // Implementation 注释下面声明的成员可声明为 public、protected 或 private。但使用这些成员时应谨慎,由于它们未来可能更改。将一组成员声明为 public 对使类库实现正常工做可能有必要。但这并不意味着能够安全地使用这样声明的成员。

注意   在 // Implementation 注释的上方或下方能够找到其他类型的注释。不管出如今上方仍是下方,这些注释都描述在它们下面声明的成员类型。若是它们出如今 // Implementation 注释下方,则应假定这些成员在未来的 MFC 版本中可能更改。 

// Attributes属性,特性,特质

MFC 类声明中的 // Attributes 节包含对象的公共特性(或属性)。这些特性或属性一般是成员变量或 Get/Set 函数。“Get”“Set”函数能够是虚拟的,也能够不是虚拟的。“Get”函数通常为 const,由于大多数状况下它们都没有反作用。这些成员一般是公共的;受保护的属性和私有属性一般在实现节中。

在注释示例下,CStdioFile 类的示例列表中包含一个成员变量 m_pStream。CDC 类在此注释下列出近 20 个成员。

注意   大类(如 CDC 和 CWnd)的成员可能很是多,若只是在一组中列出全部属性,对清楚地描述成员并无多大帮助。在这种状况下,类库使用标头形式的其余注释来进一步描述成员。例如,CDC 使用 // Device-Context Functions、// Drawing Tool Functions、// Drawing Attribute Functions 等等。表示属性的组将遵循上述普通语法。许多 OLE 类都有一个称为 // Interface Maps 的实现节。 

// Operations 注释

MFC 类声明中的 // Operations 节包含成员函数;能够在对象上调用这些函数,以使该对象执行任务或执行操做。这些函数通常是非 const 的,由于它们一般有反作用。它们能够是虚拟的,也能够不是虚拟的,具体取决于类的须要。这些成员一般是公共的。

在注释示例中的 CStdioFile 类的示例列表中,此注释下包括两个成员函数:ReadString 和 WriteString。

与属性同样,操做也能够进一步细分。

 

// Constructors 注释

MFC 类声明中的 // Constructors 节声明构造函数(从 C++ 的角度)以及实际使用对象所需的任何初始化函数。例如,CWnd::Create 位于构造函数节中,由于在使用 CWnd 对象以前,必须首先调用 C++ 构造函数,而后调用 Create 函数来完整构造它。这些成员一般是公共的。

例如,CStdioFile 类有三个构造函数,其中一个显示在注释示例下的列表中。

 

// Overridables 注释

MFC 类声明中的 // Overridables 节包含虚函数;当您须要修改基类行为时,能够在派生类中重写这些函数。虚函数的名称一般以“On”开头,但 On 不是绝对须要的。此处的函数旨在被重写,而且常实现或提供某种类型的回调挂钩。这些成员一般是受保护的。

在 MFC 自己中,纯虚函数老是放在此节中。C++ 中的纯虚函数是下面这样的形式: 

virtual void OnDraw( ) = 0;

在注释示例中的 CStdioFile 类的示例列表中不包括任何可重写节。另外一方面,CDocument 类列出了大约 10 个可重写的成员函数。

在某些类中还能够看到注释 // Advanced Overridables。这些是只有高级程序员才应尝试重写的函数。您可能永远不须要重写它们。

注意   本文描述的约定一般也适用于自动化(之前称为 OLE 自动化)方法和属性。自动化方法相似于 MFC 操做。自动化属性相似于 MFC 特性。自动化事件(支持 ActiveX 控件,之前称为 OLE 控件)相似于 MFC 可重写的成员函数。

相关文章
相关标签/搜索