MSDN为CWnd定义为:Provides the base functionality of all windows classes in the MFC library.
class CWnd : public CCmdTarget
一个CWnd对象不同于Windows窗口,然而两者还是紧密联系在一起。CWnd对象的创建和销毁是通过CWnd的构造函数和析构函数,另一方面,Windows窗口是Windows内部的一种数据结构,它通过Create成员函数创建,销毁是通过CWnd虚析构函数。DestroyWindow函数只是销毁Windows窗口,而不会销毁CWnd对象。
CWnd类和消息机制隐藏了WndProc过程,在派生类,必须重写OnMessage成员函数处理特定的消息。CWnd类也可以创建一个子窗口,分为两个步骤:首先调用CWnd构造函数创建一个CWnd对象,然后调用Create成员函数生成子窗口并使之与CWnd对象关联。
在MFC库中,有许多类派生自CWnd。包括CFrameWnd, CMDIFrameWnd, CMDIChildWnd, CView和CDialog。控件类也是派生自CWnd,比如CButton。
对于CWnd的基类CCmdTarget,是MFC消息映射体系的基类。关键框架类都继承此类,包括CView, CWinApp, CDocument, CWnd, 和CFrameWnd。如果你计划在一个新类处理消息,从这些CCmdTarget派生类派生。你很少直接从CCmdTarget派生。