Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Программирование в Windows API. Учебное пособие

.pdf
Скачиваний:
1
Добавлен:
12.08.2026
Размер:
752 Кб
Скачать

Таблица 3.1. Стили класса окон

Обозначение

Действие

 

Выравнивание клиентской области

CS_BYTEALIGNCLIENT

окна с границей по байту (в

направлении x). Влияет на ширину

 

 

окна и его горизонтальное положение.

 

Выравнивание окна с границей по

CS_BYTEALIGNWINDOW

байту (в направлении x). Влияет на

ширину окна и его горизонтальное

 

 

положение.

 

Выделение единого контекста

 

устройства, распределяемого между

CS_CLASSDC

всеми окнами данного класса.

Система позволяет выполнить

 

 

операции графического вывода

 

только одному потоку.

 

Поддержка сообщения о двойных

CS_DBLCLKS

нажатиях клавиш мыши в окне

 

данного класса.

 

Указывает, что данный класс является

 

глобальным, т.е. доступен для

CS_GLOBALCLASS

использования во всех модулях

процесса, или даже (при

 

 

определённых условиях) всем

 

приложениям.

 

Перерисовка всего окна, если

CS_HREDRAW

перемещение или настройка размера

изменили горизонтальный размер

 

 

окна.

CS_NOCLOSE

Блокирование кнопки закрытия в

системном меню окна.

 

 

Выделение собственного контекста

CS_OWNDC

устройства для каждого окна данного

 

класса.

 

Установка для окон данного класса

CS_PARENTDC

контекста устройства родительского

окна, т.е. дочернее окно и родитель

 

 

имеют единый контекст.

CS_SAVEBITS

Сохранение как битовой карты

 

21

области экрана, перекрываемой окном данного класса. После закрытия или перемещения такого окна система не передаёт перекрытым окнам сообщение WM_PAINT, а восстанавливает изображение на экране из битовой карты. Этот стиль удобен для небольших окон (например, меню и диалогов).

Перерисовка всего окна, если CS_VREDRAW перемещение или настройка размера

изменили вертикальный размер окна.

Таблица 3.2. Константы системных цветов, используемых для фона окна

Обозначение

Элемент интерфейса

COLOR_ACTIVEBORDER

Рамка активного окна.

COLOR_ACTIVECAPTION

Заголовок активного окна.

COLOR_APPWORKSPACE

Фон приложений MDI.

COLOR_BACKGROUND

Рабочий стол.

COLOR_BTNFACE

Трёхмерные элементы и фон

диалоговых окон.

 

COLOR_BTNSHADOW

Тень трёхмерных элементов.

COLOR_BTNTEXT

Надписи на кнопках.

COLOR_CAPTIONTEXT

Текст заголовка.

COLOR_GRAYTEXT

Надписи на недоступных

элементах.

 

COLOR_HIGHLIGHT

Выделенные элементы.

COLOR_HIGHLIGHTTEXT

Текст выделенных элементов.

COLOR_INACTIVEBORDER

Рамка неактивного окна.

COLOR_INACTIVECAPTION

Заголовок неактивного окна.

COLOR_MENU

Меню.

COLOR_MENUTEXT

Текст меню.

COLOR_SCROLLBAR

Линейка прокрутки.

COLOR_WINDOW

Фон окна.

COLOR_WINDOWFRAME

Рамка окна.

22

3.4 Функция UnregisterClass

Функция UnregisterClass отменяет регистрацию класса окон, освобождая занятую память. Класс должен быть ранее зарегистрирован функцией RegisterClass (или RegisterClassEx). Отмену регистрации системных классов выполнить нельзя.

BOOL UnregisterClass (LPCTSTR lpClassName, HINSTANCE hInstance);

lpClassName

Адрес строки названия или атом-идентификатор класса.

hInstance

Адрес модуля, создавшего данный класс.

Возвращаемое значение:

при успешном завершении: ненулевое значение;

при ошибке: ноль.

3.5 Функция CreateWindow

Функция CreateWindow создаёт окно определённого класса:

HWND CreateWindow (LPCTSTR lpClassName, LPCTSTR lpWindowName, DWORD dwStyle, int x, int y, int nWidth, int nHeight,

HWND hWndParent, HMENU hMenu, HINSTANCE hInstance, LPVOID lpParam);

23

lpClassName

Атом-идентификатор или адрес строки названия стандартного или зарегистрированного функцией

RegisterClass (или RegisterClassEx) класса. Если указывается атом, тогда он должен находиться в младшем слове параметра, старшее слово должно быть равно нулю. Если указывается адрес строки, она может содержать имя класса из стандартного набора.

lpWindowName

Адрес строки, содержащей текст окна. Если окно имеет заголовок, этот текст размещается в нём. Если создаётся элемент управления (кнопка, переключатель, метка и т.п), параметр определяет текст элемента. При создании элемента типа STATIC (метка) со стилем SS_ICON (с пиктограммой), параметр определяет имя или идентификатор пиктограммы (для указания идентификатора используется синтаксис "#num").

dwStyle

Набор стилей создаваемого окна (таблица 3.3).

x

Начальная позиция окна по горизонтали относительно экрана (для самостоятельных перекрываемых окон) или относительно левого угла клиентской области родительского окна (для дочерних окон).

Если параметр установлен в CW_USEDEFAULT, для перекрываемых окон система выбирает позицию по умолчанию и игнорирует параметр y, для всплывающих (pop-up) или дочерних (child) окон параметры x и y устанавливаются в 0.

24

y

Начальная позицию окна по вертикали относительно верхнего угла экрана (для перекрываемых или всплывающих окон) или относительно верхнего угла клиентской области родительского окна (для дочерних окон). Для окна списка прокрутки (listbox) определяет начальную позицию по вертикали верхнего угла клиентской области списка относительно верхнего угла клиентской области родительского окна. Если перекрываемое окно создаётся со стилем WS_VISIBLE и параметр x установлен в CW_USEDEFAULT, данный параметр игнорируется.

nWidth

Ширина окна в единицах устройства отображения. Для перекрываемых окон параметр означает высоту окна в экранных координатах. Если параметр установлен в CW_USEDEFAULT, система выбирает ширину и высоту по умолчанию; ширина по умолчанию находится в пределах от начальной координаты x до правой кромки экрана, высота по умолчанию – от начальной координаты y до верха области пиктограммы. CW_USEDEFAULT действителен только для перекрываемых окон, если создаётся всплывающее или дочернее окно, nWidth и nHeight устанавливаются в 0.

nHeight

Высота окна в единицах устройства отображения. Для перекрываемых окон параметр означает высоту окна в экранных координатах. Если параметр nWidth установлен в CW_USEDEFAULT, параметр nHeight игнорируется.

25

hWndParent

Дескриптор родительского окна или окна-владельца. Произвольный для всплывающих окон, требуется для дочерних и зависимых окон.

hMenu

Определяет целочисленное значение, означающее:для самостоятельных перекрываемых и всплывающих окон - дескриптор меню,

используемого с окном, если NULL – используется меню, указанное в классе окна;

Для дочерних окон – командный идентификатор диалогового элемента, который должен быть уникальным в пределах родительского окна.

hInstance

Адрес экземпляра приложения, связанного с создаваемым окном.

lpParam

Некоторый адрес, передаваемый окну через поле lParam структуры CREATESTRUCT с сообщением WM_CREATE. Если приложение создаёт клиентское окно MDI, параметр должен содержать адрес структуры CLIENTCREATESTRUCT.

Возвращаемое значение:

при успешном завершении: дескриптор окна;

если при создании окна возникла ошибка: NULL.

26

Таблица 3.3. Стили окна

Обозначение стиля

Значение

WS_BORDER

Окно имеет тонкую рамку.

WS_CAPTION

Окно имеет строку заголовка

(включает стиль WS_BORDER).

 

 

Дочернее окно, окно данного типа не

WS_CHILD

может иметь меню. Данный стиль не

может быть использован совместно

 

 

со стилем WS_POPUP.

WS_CHILDWINDOW

Аналогичен стилю WS_CHILD.

 

Исключает область, занимаемую

WS_CLIPCHILDREN

дочерним окном, когда рисование

 

происходит в родительском окне.

 

Отсекает дочерние окна таким

 

образом, что когда определённое

 

дочернее окно получает сообщение

WS_CLIPSIBLINGS

WM_PAINT,все другие

 

перекрывающие дочерние окна

 

отсекаются из области, которая

 

должна быть обновлена.

 

Окно изначально недоступно, т.е. не

WS_DISABLED

может быть использовано

 

пользователем для ввода.

 

Окно имеет рамку, обычно

WS_DLGFRAME

используемую для диалоговых окон.

 

Не может иметь заголовок.

 

Окно является первым в группе

 

элементов управления. Группа

 

представляет собой данное и все

 

последующие окна до следующего

WS_GROUP

элемента, имеющего стиль

WS_GROUP. Первый элемент

 

 

каждой группы обычно имеет стиль

 

WS_TABSTOP, так что пользователь

 

может перемещаться от группы к

 

группе.

WS_HSCROLL

Окно имеет горизонтальную

линейку прокрутки.

 

WS_ICONIC

Окно изначально минимизировано.

Аналогичен стилю WS_MINIMIZE.

 

 

27

WS_MAXIMIZE

Окно изначально максимизировано.

 

Окно имеет кнопку максимизации.

 

Не может использоваться совместно

WS_MAXIMIZEBOX

с дополнительным стилем

WS_EX_CONTEXTHELP. Должен

 

 

быть также указан стиль

 

WS_SYSMENU.

WS_MINIMIZE

Окно изначально минимизировано.

Аналогичен стилю WS_ICONIC.

 

 

Окно имеет кнопку минимизации.

 

Не может использоваться совместно

WS_MINIMIZEBOX

со дополнительным стилем

WS_EX_CONTEXTHELP. Должен

 

 

быть также указан стиль

 

WS_SYSMENU.

 

Окно перекрываемое, имеет

WS_OVERLAPPED

заголовок и рамку. Аналогичен

 

стилю WS_TILED.

 

Окно перекрываемое и имеющее

 

стили WS_CAPTION,

 

WS_SYSMENU,

WS_OVERLAPPEDWINDOW

WS_THICKFRAME,

 

WS_MINIMIZEBOX и

 

WS_MAXIMIZEBOX. Аналогичен

 

стилю WS_TILEDWINDOW.

WS_POPUP

Окно всплывающее. Не может

использоваться вместе с WS_CHILD.

 

 

Окно всплывающее и имеющее

 

стили WS_BORDER и

WS_POPUPWINDOW

WS_SYSMENU. Для включения

меню окна должны быть указаны

 

 

стили WS_CAPTION и

 

WS_POPUPWINDOW.

 

Окно имеет рамку, позволяющую

WS_SIZEBOX

изменять его размеры. Аналогичен

 

стилю WS_THICKFRAME.

 

Окно имеет системное меню в

WS_SYSMENU

заголовке. Также должен быть

 

указан стиль WS_CAPTION.

28

 

Окно является элементом

 

управления, который может

 

получить фокус ввода, когда

WS_TABSTOP

пользователь нажимает клавишу

 

TAB (переключение фокуса с одного

 

элемента, имеющего стиль

 

WS_TABSTOP, на другой).

 

Окно имеет рамку, позволяющую

WS_THICKFRAME

изменять его размеры. Аналогичен

 

стилю WS_SIZEBOX.

 

Окно перекрываемое, имеет

WS_TILED

заголовок и рамку. Аналогичен

 

стилю WS_OVERLAPPED.

 

Окно перекрываемое и имеющее

 

стили WS_CAPTION,

 

WS_SYSMENU,

WS_TILEDWINDOW

WS_THICKFRAME,

WS_MINIMIZEBOX и

 

 

WS_MAXIMIZEBOX.

 

Аналогичен стилю

 

WS_OVERLAPPEDWINDOW.

WS_VISIBLE

Окно изначально видимое.

WS_VSCROLL

Окно имеет вертикальную линейку

прокрутки.

 

3.6 Функция ShowWindow

Функция ShowWindow отображает окно в указанном режиме:

BOOL ShowWindow (HWND hWnd, int nCmdShow);

hWnd

Дескриптор окна. nCmdShow

Код режима отображения окна (таблица 3.4).

29

Возвращаемое значение:

если до вызова окно было видимым: ненулевое значение;

если окно было скрыто: ноль.

Таблица 3.4. Режимы отображения окна.

Обозначение режима

Значение

 

Сворачивает окно, даже если

 

соответствующий поток висит.

SW_FORCEMINIMIZE

Рекомендуется использовать этот режим

 

только для сворачивания окна из

 

другого потока.

SW_HIDE

Скрывает данное окно и активизирует

другое окно.

 

SW_MAXIMIZE

Максимизирует окно.

SW_MINIMIZE

Минимизирует окно и активизирует

следующее окно верхнего уровня.

 

 

Активизирует и отображает окно.

SW_RESTORE

Если окно свёрнуто или развёрнуто,

система восстанавливает исходный

 

 

размер и положение.

SW_SHOW

Активизирует окно и отображает его в

текущей позиции и размерах.

 

 

Устанавливает режим отображения по

SW_SHOWDEFAULT

значению, указанному в структуре

 

STARTUPINFO.

SW_SHOWMAXIMIZED

Активизирует и максимизирует окно.

SW_SHOWMINIMIZED

Активизирует и минимизирует окно.

SW_SHOWMINNOACTIVE

Отображает окно в свёрнутом

состоянии, не активизирует его.

 

SW_SHOWNA

Отображает окно в его текущей позиции

и размерах, но не активизирует его.

 

 

Отображает окно в его последней

SW_SHOWNOACTIVATE

позиции и размерах, но не активизирует

 

его.

 

Активизирует и отображает окно. Если

SW_SHOWNORMAL

окно свёрнуто или развёрнуто, система

восстанавливает исходный размер и

 

 

положение.

 

30

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]