Win32 API. Быстрые клавиши
Страница 28. Сообщение WM_SYSCOMMAND


Сообщение WM_SYSCOMMAND

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

Синтаксис

WM_SYSCOMMAND
uCmdType = wParam; // затребованный тип системной команды
xPos = LOWORD(lParam); // горизонтальная позиция, в экранных координатах
yPos = HIWORD(lParam); // вертикальная позиция, в экранных координатах

Параметры
uCmdType
Определяет тип запрошенной системной команды. Он может быть одним из этих значений:

  • SC_CLOSE - Закрывает окно.
  • SC_CONTEXTHELP - Изменяет курсор на указатель с вопросительным знаком. Если пользователь затем щелкает кнопкой мыши по органу управления в диалоговом окне, элемент управления получает сообщение WM_HELP.
  • SC_DEFAULT - Выбирает заданный по умолчанию пункт; пользователь дважды щелкнул мышью по меню окна.
  • SC_HOTKEY - Активизирует окно, связанное с определяемой прикладной программой последовательностью клавиш-ускорителей "hot key". Младшее слово lParam идентифицирует окно, которое активизируется.
  • SC_HSCROLL - Прокрутка содержимого окна по горизонтали.
  • SC_KEYMENU - Извлекает данные о меню окна в результате нажатия клавиши.
  • SC_MAXIMIZE (или SC_ZOOM) - Развертывает окно.
  • SC_MINIMIZE (или SC_ICON) - Свертывает окно.
  • SC_MONITORPOWER - Только для Windows 95: Устанавливает состояние дисплея. Эта команда поддерживает устройства, которые имеют энергосберегающие функции, типа персонального компьютера с батарейным питанием.
  • SC_MOUSEMENU - Извлекает данные о меню окна в результате щелчка клавиши мыши.
  • SC_MOVE - Перемещает окно.
  • SC_NEXTWINDOW - Перемещает в следующее окно.
  • SC_PREVWINDOW - Перемещает в предыдущее окно.
  • SC_RESTORE - Восстанавливает окно в обычной позиции и размере.
  • SC_SCREENSAVE - Запускает программу-заставку приложения, определяемую в разделе [boot] (начальной загрузки) файла SYSTEM.INI.
  • SC_SIZE - Изменяет размеры окна.
  • SC_TASKLIST - Запускает или активизирует Windows Task Manager (Диспетчер задач).
  • SC_VSCROLL - Прокрутка содержимого окна по вертикали.

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

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

Замечания
Функция DefWindowProc завершает запрос меню окна о предопределенных действиях, перечисленных в предыдущей таблице.
В сообщениях WM_SYSCOMMAND, четыре младших бита параметра uCmdType используются для внутренних потребностей Windows. Чтобы получить правильный результат при проверке значения uCmdType, прикладная программа должна объединить значение 0xFFF0 со значением uCmdType при помощи использования побитового оператора AND.
Пункты в меню окна могут быть изменены при помощи использования функций GetSystemMenu, AppendMenu, InsertMenu, ModifyMenu, InsertMenuItem и SetMenuItem. Прикладные программы, которые изменяют меню окна, должны обрабатывать сообщения WM_SYSCOMMAND.
Прикладная программа может выполнить любую команду системы в любое время, передавая сообщение WM_SYSCOMMAND в DefWindowProc. Любые сообщения WM_SYSCOMMAND, не обработанные программой должны быть переданы в DefWindowProc. Любые значения команд, добавленные приложением, должны быть обработаны прикладной программой и не могут быть переданы в DefWindowProc.
Клавиши-ускорители, которые определены для выбора пунктов из меню окна, транслируются в сообщения WM_SYSCOMMAND; все другие нажатия клавиш - ускорителей транслируются в сообщения WM_COMMAND.

Смотри также
AppendMenu, DefWindowProc, GetSystemMenu, InsertMenu, ModifyMenu, WM_COMMAND

Размещение и совместимость WM_SYSCOMMAND

Windows NTДа 
Win95Да
Win32sДа
Импортируемая библиотека-
Заголовочный файлwinuser.h
UnicodeНет
Замечания по платформеНе имеется
 
Следующая статья »