MFC 提供类 CWnd 来封装 HWND
窗口的句柄。 该 CWnd
对象是一个C++窗口对象,不同于 HWND
表示 Windows 窗口但包含该窗口的对象。 用于 CWnd
派生自己的子窗口类,或使用派生自 CWnd
的多个 MFC 类之一。 类 CWnd
是所有窗口(包括框架窗口、对话框、子窗口、控件和控件栏(如工具栏)的基类。 更好地了解 C++窗口对象与 HWND 之间的关系 对于使用 MFC 进行有效编程至关重要。
MFC 提供一些默认功能和窗口管理,但你可以从 CWnd
其成员函数中派生自己的类,并使用其成员函数自定义提供的功能。 可以通过构造 CWnd
对象并调用其 Create 成员函数,然后使用成员函数自定义子窗口来创建子窗口 CWnd
。 可以在框架窗口中嵌入派生自 CView 的对象,例如窗体视图或树视图。 还可以通过拆分器窗格(由 CSplitterWnd 类提供)支持文档的多个视图。
从类 CWnd
派生的每个对象都包含一个消息映射,你可以通过该映射将 Windows 消息或命令 ID 映射到你自己的处理程序。
有关 Windows 编程的一般文献是了解如何使用 CWnd
封装 HWND
API 的成员函数的好资源。
用于在 CWnd 上运行的函数
CWnd
及其 派生的窗口类 提供构造函数、析构函数和成员函数来初始化对象、创建基础 Windows 结构以及访问封装 HWND
的函数。
CWnd
还提供用于封装 Windows API 的成员函数,用于发送消息、访问窗口的状态、转换坐标、更新、滚动、访问剪贴板和其他许多任务。 采用 HWND
参数的大多数 Windows 窗口管理 API 都封装为成员函数 CWnd
。 函数的名称及其参数保留在成员函数中 CWnd
。 有关封装的 CWnd
Windows API 的详细信息,请参阅 CWnd 类。
CWnd 和 Windows 消息
主要用途 CWnd
之一是提供用于处理 Windows 消息的接口,例如WM_PAINT或WM_MOUSEMOVE。 许多成员函数都是标准消息的 CWnd
处理程序,这些函数以标识符 afx_msg 开头,前缀为“打开”,例如 OnPaint
和 OnMouseMove
。
消息处理和映射 详细介绍了消息和消息处理。 其中的信息同样适用于框架的窗口和你自己为特殊目的创建的信息。