Поделиться через


Производные классы окон

Вы можете создавать окна непосредственно из CWnd, или создавать новые классы окон из CWnd. Как правило, вы создаете собственные пользовательские окна. Однако большинство окон, используемых в программе платформы, вместо этого создаются из одного из классов окон рамки, производных от CWnd, предоставляемых MFC.

Классы окна фрейма

CFrameWnd
Используется для окон фреймов SDI, которые обрамляют один документ и его представление. Окно фрейма — это как основное окно фрейма для приложения, так и окна фрейма для текущего документа.

CMDIFrameWnd
Используется в качестве главного окна фрейма для приложений MDI. Основное окно фрейма — это контейнер для всех окон документов MDI и совместно с ними предоставляет общий доступ к строке меню. Окно кадров MDI — это окно верхнего уровня, которое отображается на рабочем столе.

CMDIChildWnd
Используется для отдельных документов, открытых в главном окне MDI. Каждый документ и его представление обрамляются дочерним окном рамки MDI, содержащимся в главном окне рамки MDI. Дочернее окно MDI выглядит так же, как обычное окно-рамка, но содержится в MDI-рамке, а не находится на рабочем столе. Однако дочернее окно MDI не имеет собственной строки меню. Он должен предоставить общий доступ к строке меню окна фрейма MDI, содержащего его.

Дополнительные сведения см. в окнах фрейма.

Другие классы окон, производные от CWnd

В дополнение к окнам фрейма, некоторые другие основные категории окон являются производными от CWnd:

  • Взгляды:
    Представления создаются с помощью производного CWndкласса CView (или одного из производных классов). Представление присоединено к документу и выступает в качестве посредника между документом и пользователем. Представление — это дочернее окно (а не дочернее окно MDI), которое обычно заполняет клиентскую область окна рамки SDI или дочернего окна рамки MDI (или этой части клиентской области, которая не закрыта панелью инструментов или строкой состояния).

  • Диалоговые окна:
    Диалоговые окна создаются с помощью производного CWndкласса CDialog.

  • Формы:
    Представления форм, основанные на ресурсах диалогового шаблона, таких как диалоговые окна, создаются с помощью классов CFormViewили CRecordViewCDaoRecordView.

  • Элементы управления:
    Элементы управления, такие как кнопки, списки и поля со списком, создаются с помощью других классов, производных от CWnd. См. темы по управлению.

  • Панели управления:
    Дочерние окна, содержащие элементы управления. Примеры включают панели инструментов и панели состояния. См. панели управления.

Иерархия классов Окон

См. диаграмму иерархии MFC в справочнике по MFC. Представления описаны в архитектуре document/view. Диалоговые окна описаны в диалоговых окнах.

Создание собственных классов окон Special-Purpose

Помимо классов окон, предоставляемых библиотекой классов, вам могут понадобиться специальные дочерние окна. Чтобы создать такое окно, создайте собственный CWnd производный класс и сделайте его дочерним окном фрейма или представления. Помните, что платформа управляет степенью клиентской области окна фрейма документа. Большая часть клиентской области управляется представлением, но другие окна, такие как панели управления или собственные пользовательские окна, могут совместно использовать пространство с представлением. Возможно, вам потребуется взаимодействовать с механизмами в классах CView и CControlBar для размещения дочерних окон в клиентской области рамочного окна.

Создание окон описывает создание объектов окна и управляемых ими окон.

См. также

Объекты окна