Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Окно получает это сообщение, когда пользователь выбирает команду из меню "Окно " (прежнее название — системное или управляющее меню) или когда пользователь выбирает кнопку "Развернуть", "Свернуть", "Восстановить" или "Закрыть".
#define WM_SYSCOMMAND 0x0112
Example
case WM_SYSCOMMAND:
if ((wParam & 0xFFF0) == SC_CLOSE)
{
EndDialog (hDlg, TRUE);
return(TRUE);
}
break;
Пример из классических примеров Windows на сайте GitHub.
Параметры
-
wParam
-
Тип запрошенной системной команды. Четыре бита с низким порядком параметра wParam используются внутренне системой. Биты 4-15 содержат код команды, который может быть одним из следующих значений.
Ценность Meaning - SC_CLOSE
- 0xF060
Закрывает окно. - SC_CONTEXTHELP
- 0xF180
Изменяет курсор на вопросительный знак указателем. Если пользователь щелкает элемент управления в диалоговом окне, элемент управления получает сообщение WM_HELP . - SC_DEFAULT
- 0xF160
Выбирает элемент по умолчанию; Пользователь дважды щелкнул меню окна. - SC_HOTKEY
- 0xF150
Активирует окно, связанное с заданным приложением горячим ключом. Параметр lParam определяет окно для активации. - SC_HSCROLL
- 0xF080
Прокручивается по горизонтали. - SC_KEYMENU
- 0xF100
Извлекает меню окна в результате нажатия клавиш. Дополнительные сведения см. в разделе с примечаниями. - SC_MAXIMIZE
- 0xF030
Разворачивает окно. - SC_MINIMIZE
- 0xF020
Свернуть окно. - SC_MONITORPOWER
- 0xF170
Задает состояние дисплея. Эта команда поддерживает устройства, имеющие функции экономии питания, такие как персональный компьютер с питанием от батареи.
Параметр lParam может иметь следующие значения:- -1 (экран включен)
- 1 (дисплей собирается с низкой мощностью)
- 2 (отображение отключается)
- SC_MOUSEMENU
- 0xF090
Извлекает меню окна в результате щелчка мыши. - SC_MOVE
- 0xF010
Перемещает окно. - SC_NEXTWINDOW
- 0xF040
Переходит к следующему окну. - SC_PREVWINDOW
- 0xF050
Переходит к предыдущему окну. - SC_RESTORE
- 0xF120
Восстанавливает окно в нормальном положении и размере. - SC_SCREENSAVE
- 0xF140
Выполняет приложение с сохранением экрана, указанное в разделе [boot] файла System.ini. - SC_SIZE
- 0xF000
Размер окна. - SC_TASKLIST
- 0xF130
Активирует меню "Пуск ". - SC_VSCROLL
- 0xF070
Прокручивается по вертикали. Если код команды SC_SCREENSAVE, в четырех битах низкого порядка доступны следующие флаги:
Flag Meaning - SCF_ISSECURE
- 0x0001
Средство сохранения экрана безопасно. -
lParam
-
Слово с низким порядком указывает горизонтальную позицию курсора в координатах экрана, если выбрана команда меню окна с помощью мыши. В противном случае этот параметр не используется.
Слово с высоким порядком указывает вертикальную позицию курсора в координатах экрана, если выбрана команда меню окна с помощью мыши. Этот параметр равен 1, если команда выбрана с помощью системного акселератора или ноль при использовании mnemonic.
Возвращаемое значение
Приложение должно возвращать ноль, если оно обрабатывает это сообщение.
Замечания
Чтобы получить координаты позиции в координатах экрана, используйте следующий код:
xPos = GET_X_LPARAM(lParam); // horizontal position
yPos = GET_Y_LPARAM(lParam); // vertical position
Функция DefWindowProc выполняет запрос меню окна для предопределенных действий, указанных в предыдущей таблице.
В сообщениях WM_SYSCOMMAND четыре бита с низким порядком параметра wParam используются внутренне системой. Чтобы получить код команды из значения wParam , приложение должно объединить значение 0xFFF0 со значением wParam с помощью битового оператора AND, как показано в приведенном выше примере.
Элементы меню в меню окна можно изменить с помощью функций GetSystemMenu, AppendMenu, InsertMenu, InsertMenu, ModifyMenu, InsertMenuItem и SetMenuItemInfo. Приложения, изменяющие меню окна, должны обрабатывать WM_SYSCOMMAND сообщения.
Приложение может выполнять любую системную команду в любое время, передав сообщение WM_SYSCOMMANDв DefWindowProc. Все WM_SYSCOMMAND сообщения, не обрабатываемые приложением, должны передаваться в DefWindowProc. Любые значения команд, добавленные приложением, должны обрабатываться приложением и не могут передаваться в DefWindowProc.
Если защита паролей включена политикой, средство сохранения экрана запускается независимо от того, что приложение делает с уведомлением SC_SCREENSAVE , даже если не удается передать его в DefWindowProc.
Клавиши акселератора, определенные для выбора элементов в меню окна, превратятся в сообщения WM_SYSCOMMAND ; все остальные нажатия клавиш акселератора превратятся в сообщения WM_COMMAND .
Если wParamSC_KEYMENU, lParam содержит код символа ключа, который используется с клавишей ALT для отображения всплывающего меню. Например, нажатие клавиш ALT+F для отображения всплывающего окна "Файл" приведет к WM_SYSCOMMAND с wParam равным SC_KEYMENU и lParam равным f.
Требования
| Требование | Ценность |
|---|---|
| Минимальный поддерживаемый клиент |
Windows 2000 Профессиональный [только классические приложения] |
| Минимальный поддерживаемый сервер |
Windows 2000 Server [только классические приложения] |
| Header |
|
См. также
-
Справочные материалы
-
Концептуальный