Visual C++. Описание стандартных классов - CWnd

ОГЛАВЛЕНИЕ


CWnd

Класс CWnd обеспечивает основные функциональные возможности всех классов окон в библиотеке MFC. Объект класса CWnd не является окном Windows, но тесно с ним связан. Если объект класса CWnd является полноценным объектом класса, создается своим конструктором и уничтожается своим деструктором, то окно Windows является внутренней структурой данных Windows, создаваемой функцией CWnd::Create и уничтожаемой виртуальным деструктором класса CWnd. Функция CWnd::DestroyWindow уничтожает окно Windows, не уничтожая объект класса CWnd. Класс CWnd и механизм карты сообщения скрывают от пользователя функцию WndProc. Поступающие в объект данного класса сообщения Windows автоматически направлены через карту сообщения к соответствующим функциям обработки сообщений класса CWnd. Чтобы обработать в пользовательском классе сообщение, поступающее от некоторого элемента управления, пользователю необходимо включить в свой класс функцию обработки данного сообщения. Класс CWnd позволяет пользователю создать дочернее окно Windows для своего приложения. Для этого достаточно создать пользовательский класс, производный от класса CWnd, а затем добавить в него переменные для хранения данных, характерных для данного окна приложения. После этого необходимо включить в карту сообщений макросы для обработки приходящих в класс сообщений и написать тела функций обработки сообщений, объявленных в карте сообщений. Дочернее окно создается в два этапа. Сначала вызывается конструктор класса CWnd, создающий объект данного класса, а затем вызывается функция Create, создающая дочернее окно и присоединяющая его к объекту класса CWnd. Когда пользователь закрывает дочернее окно, происходит уничтожение объекта класса CWnd или вызывается функция DestroyWindow, уничтожающая окно и связанные с ним структуры данных. В библиотеке MFC собрано множество классов, производных от CWnd. Многие из этих классов, включая CFrameWnd, CMDIFrameWnd, CMDIChildWnd, CView и CDialog, сами используются в качестве базовых классов для различных пользовательских классов. Классы элементов управления, являющиеся производными от класса CWnd, такие, как класс CButton, могут использоваться непосредственно или могут использоваться в качестве базовых для пользовательских классов. Описание данного класса содержится в файле заголовка afxwin.h.