Программирование для IBM OS2


Функция main - часть 2


hWndChildFrame = WinCreateStdWindow (hWndFrame2, WS_VISIBLE , &flFrameChildFlags, szWndClassChild, szChildTitle, 0, 0, ID_CHILDWND, &hWndChildClient);

В качестве идентификатора ресурса для дочернего окна указана константа ID_CHILDWND. В файле описания ресурсов нет пиктограммы с таким идентификатором, поэтому если не предпринимать никаких дополнительных мер, для системного меню будет использована стандартная пиктограмма, определенная в Presentation Manager.

После создания дочернего окна функция main устанавливает его размеры и расположение, вызывая для этого рассмотренную нами ранее функцию WinSetWindowPos :

WinSetWindowPos (hWndChildFrame, HWND_TOP , 10, 10, 200, 200, SWP _ACTIVATE | SWP_SIZE | SWP_SHOW | SWP_MOVE );

Далее для изменения пиктограммы системного меню при помощи функции WinSendMsg в функцию дочернего окна посылается сообщение WM_SETICON :

WinSendMsg (hWndChildFrame, WM_SETICON , (MPARAM)WinQuerySysPointer (HWND_DESKTOP, SPTR_APPICON, FALSE), NULL);

Первый параметр этого сообщения должен содержать идентификатор пиктограммы, второй не используется и указан как NULL.

Функция WinQuerySysPointer предназначена для получения идентификатора ресурса системного курсора или системной пиктограммы, заданной своим идентификатором. Прототип этой функции приведен ниже:

HPOINTER WinQuerySysPointer ( HWND hwndDeskTop, // идентификатор окна Desktop Window LONG lIdentifier, // идентификатор системного курсора // или пиктограммы BOOL fCopy); // признак копирования

В качестве значения для параметра hwndDeskTop можно использовать константу HWND_DESKTOP. Что же касается идентификатора lIdentifier, то для него следует указывать одно из приведенных ниже значений.

Значение Описание
SPTR_ARROW Курсор в виде стрелки
SPTR_TEXT Текстовый курсор в виде буквы I
SPTR_WAIT Курсор в виде песочных часов
SPTR_SIZE Курсор для изменения размера
SPTR_MOVE Курсор для перемещения объектов
SPTR_SIZENWSE Курсор для изменения размера, направленный вниз
SPTR_SIZENESW Курсор для изменения размера, направленный вверх
SPTR_SIZEWE Горизонтальный курсор для изменения размера
SPTR_SIZENS Вертикальный курсор для изменения размера
SPTR_APPICON Стандартная пиктограмма приложения
SPTR_ICONINFORMATION Пиктограмма для информационного сообщения
SPTR_ICONQUESICON Пиктограмма со знаком вопроса
SPTR_ICONERROR Пиктограмма для сообщения об ошибке
SPTR_ICONWARNING Пиктограмма для предупреждающего сообщения
SPTR_ILLEGAL Пиктограмма для сообщения о неправильной операции
SPTR_FILE Пиктограмма для обозначения одного файла
SPTR_MULTFILE Пиктограмма для обозначения группы файлов
SPTR_FOLDER Пиктограмма папки
SPTR_PROGRAM Пиктограмма приложения

Признак копирования fCopy может принимать значения TRUE или FALSE. В первом случае создается копия указанного системного ресурса, которая при необходимости может быть модифицирована. Ресурс, созданный таким образом, должен быть удален после использования при помощи функции WinDestroyPointer . Эта функция имеет единественный параметр - идентификатор уничтожаемого ресурса.

Наше приложение ничего не модифицирует и использует значение FALSE. При этом функция WinQuerySysPointer просто возвращает идентификатор, который мы передаем дочернему окну через сообщение WM_SETICON .




Начало  Назад  Вперед