Уведомление WM_SYSCOMMAND


Окно получает это сообщение тогда, когда  пользователь выбирает команду из Системного меню окна (прежде известное как системное или управляющее меню) или когда пользователь выбрал кнопку развертывания, свертывания, восстановления  или закрытия окна.

Синтаксис

WM_SYSCOMMAND
    WPARAM wParam
    LPARAM lParam;

Параметры

wParam

Устанавливает тип системной затребованной команды. Этим параметром может быть одно из ниже перечисленных значений.

Значение

Предназначение

SC_CLOSE Закрывает окно.
SC_CONTEXTHELP Заменяет курсор на вопросительный знак с указателем. Если пользователь затем щелкает по органу управления в диалоговом окне, орган управления получает сообщение WM_HELP.
SC_DEFAULT Выбирает заданный по умолчанию пункт; пользователь дважды щелкнул в системном меню окна.
SC_HOTKEY Активизирует окно, связанное с определяемой прикладной программой "горячей" клавишей. Параметр lParam  идентифицирует активизируемое окно.
SC_HSCROLL Прокручивает по-горизонтали.
SC_KEYMENU Извлекает системное меню окна как результат нажатия клавиши. Дополнительную информацию, см. в разделе Замечаний.
SC_MAXIMIZE Развертывает окно.
SC_MINIMIZE Свертывает окно.
SC_MONITORPOWER Устанавливает состояние дисплея. Эта команда поддерживает устройства, которые имеют энергосберегающие функции, типа персонального компьютера c батарейным питанием.

Параметр lParam может иметь ниже перечисленные значения:
1 - на дисплей приходит недостаточная мощность
2 - дисплей отключен

SC_MOUSEMENU Извлекает системное меню окна в результате щелчка мышью.
SC_MOVE Перемещает окно.
SC_NEXTWINDOW Перемещает в следующее окно.
SC_PREVWINDOW Перемещает в предыдущее окно.
SC_RESTORE Восстанавливает окно в его обычной позиции и размерах.
SC_SCREENSAVE Запускается экранная заставка, определенная в разделе [boot] файла System.ini.
SC_SIZE Изменяет размеры окна.
SC_TASKLIST Активизирует меню Пуск (Start).
SC_VSCROLL Прокручивает по вертикали.

lParam

Младшее слово устанавливает горизонтальную позицию курсора, в экранных координатах, если команда системного меню окна выбирается мышью. В противном случае, этот параметр не используется.

Старшее слово устанавливает вертикальную позицию курсора, в экранных координатах, если команда системного меню окна выбирается мышью. Этот параметр равен - (минус)1, если команда выбирается, используя системный ускоритель, или нуль при использовании мнемонической схемы.

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

Приложение должно возвратить нуль, если оно обрабатывает это сообщение.

Замечания

Чтобы получить позицию координат в экранных координатах, используйте нижеследующий код:

xPos = GET_X_LPARAM(lParam);    // горизонтальная позиция
yPos = GET_Y_LPARAM(lParam);    // вертикальная позиция

Функция DefWindowProc выполняет требование системного меню окна о предопределенных действиях, указанных в таблице выше.

В сообщениях WM_SYSCOMMAND, четыре младших бита параметра wParam используются для внутренних потребностей системы. Чтобы получить правильный результат при проверке значения wParam, прикладная программа должна объединить значение 0xFFF0 со значением wParam при помощи использования побитового оператора AND.

Пункты в системном меню окна могут быть изменены при помощи использования функций GetSystemMenu, AppendMenu, InsertMenu, ModifyMenu, InsertMenuItem и SetMenuItemInfo. Прикладные программы, которые изменяют системное меню окна, должны обрабатывать сообщения WM_SYSCOMMAND.

Прикладная программа может выполнить любую команду системы в любое время, передавая сообщение WM_SYSCOMMAND в DefWindowProc. Любые сообщения WM_SYSCOMMAND, не обработанные программой должны быть переданы в DefWindowProc. Любые значения команд, добавленные приложением, должны быть обработаны прикладной программой и не могут быть переданы в DefWindowProc.

Клавиши-ускорители, которые определены для выбора пунктов из системного меню окна, преобразуются в сообщения WM_SYSCOMMAND; все другие нажатия клавиш - ускорителей преобразуются в сообщения WM_COMMAND.

Если wParam - SC_KEYMENU, lParam содержит символьный код клавиши, которая используется с клавишей ALT, чтобы показать на экране всплывающее меню. Например, нажмите ALT+F, чтобы показать на экране всплывающее меню Файл, которое  вызовет WM_SYSCOMMAND с wParam, равным SC_KEYMENU, а lParam равным 'f'.

Смотри также

Обзор Ускорители клавиатуры, Уведомления, используемые ускорителями клавиатуры, AppendMenuDefWindowProc GET_X_LPARAM, GET_Y_LPARAM, GetSystemMenu, InsertMenu, ModifyMenu, WM_COMMAND

Размещение и совместимость WM_SYSCOMMAND
К Windows XP Да
л Windows 2000 Professional Да
и Windows NT Workstation Да версии 3.1 и выше
е Windows Me Да
н Windows 98 Да
т Windows 95 Да
 
С Windows Server 2003 Да
е Windows 2000 Server Да
р Windows NT Server Да версии 3.1 и выше
в    
е    
р    
Используемая библиотека -
Используемая DLL -
Заголовочный файл  
- объявлено в Winuser.h
- включено в Windows.h
Unicode Нет
Замечания по платформе Не имеется

 

Назад в оглавление
На главную страницу
На главную страницу справки

Hosted by uCoz