CWnd类--1

在MFC中类CWnd是一个很重要的类,它封装了Windows窗口句柄HWND。在Windows编程中,窗口句柄唯一的标识了一个窗口。然而,尽管类CWnd的对象和窗口句柄之间有着如此紧密的联系,但两者并不是等同的概念。CWnd对象通过类CWnd的构造函数和析构函数创建和消毁,而Windows窗口是Windows内部的一种数据结构,在类CWnd中,它通过Create成员函数创建,通过其析构函数消毁。除此之外,成员函数DestroyWindow可以消毁Windows窗口,而不需要消毁CWnd对象。

传统的Windows应用程序中,消息是通过一个称作窗口过程(window procedure,通常具有WndProc之类的函数名)的回调函数来处理的。这种方式在MFC中仍然使用,但为CWnd类及其消息映射所隐藏。在类CWnd中,Windows通知消息会被自动的通过消息映射传递到类CWnd中合适的OnMessage成员函数(这里OnMessage是指这些函数具有的以On为前缀的函数名,如OnPaint和前面接触到的OnInitDialog等)进行处理。通常我们都在类CWnd的派生类中重载需要处理的特定消息所对应的OnMessage成员函数。除了直接从CWnd派生新的窗口类以外,我们更倾向于从MFC中定义的其它类,如CFrameWnd、CMIDFrameWnd、CMDIChileWnd、CView和CDialog以及CButton之类的控件类派生新的窗口类。在MFC中定义的这些类本身也是从CWnd派生的。

通常我们使用两个步骤来创建一个窗口:首先,调用类CWnd的构造函数来构造一个CWnd对象,然后调用其成员函数Create来创建窗口并将该窗口与所创建的CWnd对象相关联。

当用户终止该窗口时,消毁与之相关联的CWnd对象,或者调用CWnd对象的成员函数DestroyWindow删除窗口并消毁其数据结构。

大多数以HWND为参数的Win32 API函数都已作为类CWnd的成员函数进行了封装,事实上,很多时候我们通过类Wnd的派生类调用的成员函数并不是由派生类本身所提供的,而是在类CWnd中进行定义的。下面我们分类给出在CWnd类中定义的各类成员函数。完整而详尽的说明每一个成员函数在本书中是不现实的,这里我们仅给出对每一个成员函数的简短说明,以便读者在编程时能够很快的查找到所需的函数,这时再去查找有关于该函数的详细的说明就不是一件困难的事了

你可能感兴趣的:(类,windows,CWnd)