Электронная библиотека книг Александра Фролова и Григория Фролова.
Shop2You.ru Создайте свой интернет-магазин
Библиотека
Братьев
Фроловых

Операционная система Microsoft Windows 3.1 для программиста. Дополнительные главы

© Александр Фролов, Григорий Фролов
Том 17, М.: Диалог-МИФИ, 1994, 287 стр.

[Назад] [Содеожание] [Дальше]

1.5. Создание и уничтожение окна Document Window

Последнее, о чем мы вам расскажем, перед тем как перейти к рассмотрению исходных текстов готового MDI-приложения, это процесс создания окна Document Window. В отличие от всех других рассмотренных нами окон, окно Document Window не создается функцией CreateWindow. Более того, окно Document Window нельзя создать этой функцией.

Для того чтобы создать окно Document Window, следует послать сообщение WM_MDICREATE окну Client Window при помощи функции SendMessage:

MDICREATESTRUCT    mdics;

mdics.szClass = szChildClassName;   // класс окна
mdics.szTitle = "MDI Child Window"; // заголовок окна
mdics.hOwner  = hInst;         // идентификатор приложения 
mdics.x       = CW_USEDEFAULT; // размеры окна Document Window
mdics.y       = CW_USEDEFAULT;
mdics.cx      = CW_USEDEFAULT;
mdics.cy      = CW_USEDEFAULT;
mdics.style   = 0;                  // дополнительные стили
mdics.lParam  = NULL;               // 32-битное значение

hwndChild = (HWND)SendMessage(hwndClient,
     WM_MDICREATE, 0, (LPARAM)&mdics);

Через последний параметр функции SendMessage передается указатель на заполненную структуру MDICREATESTRUCT:

typedef struct tagMDICREATESTRUCT
{
   LPCSTR    szClass;
   LPCSTR    szTitle;
   HINSTANCE hOwner;
   int       x;
   int       y;
   int       cx;
   int       cy;
   DWORD     style;
   LPARAM    lParam;
} MDICREATESTRUCT;

Поля этой структуры определяют такие характеристики окна Document Window, как класс окна (поле szClass), заголовок окна (szTitle), размеры и расположение (x, y, cx, cy), стиль окна (style) и произвольное 32-битовое значение lParam, которое может быть проанализировано функцией окна Document Window при получении сообщения WM_CREATE. В поле hOwner при инициализации структуры нужно также указать идентификатор приложения.

В целом назначение этих полей аналогично назначению параметров функции CreateWindow, так как, в конечном счете, именно с помощью этой функции Windows (но не приложение) создает окно Document Window.

Остановимся на поле style, которое используется для определения стиля окна Document Window. Если при создании окна Client Window был использован стиль MDIS_ALLCHILDSTYLES, в этом поле вы можете указать любой стиль, разрешенный для функции CreateWindow.

В противном случае вы должны ограничиться следующими стилями:

WS_MINIMIZE (окно Document Window будет создано в минимизированном состоянии, т. е. в виде пиктограммы);

WS_MAXIMIZE (размеры окна Document Window сразу после создания будут увеличены до максимальных пределов);

WS_HSCROLL (окно Document Window будет иметь горизонтальную полосу просмотра), WS_VSCROLL (окно Document Window будет иметь вертикальную полосу просмотра).

В любом случае для окна Document Window следует указать стили WS_CHILD и WS_CLIPSIBLINGS.

Для уничтожения окна Document Window приложение должно послать окну Client Window сообщение:

SendMessage(hwndClient, WM_MDIDESTROY, hwndDoc, 0l);

Через третий параметр следует передать функции SendMessage идентификатор уничтожаемого окна Document Window.

[Назад] [Содеожание] [Дальше]