Сообщение WM_SYSCOMMAND

Const WM_SYSCOMMAND = &H112

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

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

Сообщение WM_SYSCOMMAND всегда возвращает 0

Параметры

wParam
Следующие флаги, определяющие действия:
SC_CLOSE = &HF060
Закрыть окно
SC_CONTEXTHELP = &HF180
Меняет курсор на курсор с вопросительным знаком
SC_DEFAULT= &HF160
Выбирает заданный по умолчанию элемент(пользователь дважды нажал меню окна)
SC_HOTKEY = &HF150
Активизирует окно, связанное с горячей клавишей. Параметр lParam идентифицирует окно для активации
SC_HSCROLL=&HF080
Горизонтальный скроллинг
SC_KEYMENU=&HF100
Получить меню окна
SC_MAXIMIZE = &HF030
Развернуть окно
SC_MINIMIZE = &HF020
Свернуть окно
SC_MONITORPOWER = &HF170
Устанавливает состояние монитора. Если lParam равен 1, то монитор переходит в экономичный режим, если равен 2, то монитор выключается, если равен -1, то монитор включается
SC_MOUSEMENU=&HF090
Получить меню окна, как результат щелчка мышью
SC_MOVE = &HF010
Переместить окно
SC_NEXTWINDOW = &HF040
?
SC_PREVWINDOW=&HF050
?
SC_RESTORE = &HF120
Восстановить окно
SC_SCREENSAVE = &HF140
Запустить хранитель экрана, определенный в секции [boot] файла system.ini
SC_SIZE = &HF000
Изменить размеры окна
SC_TASKLIST=&HF130
Активировать меню кнопки Пуск
SC_VSCROLL=&HF070
Вертикальный скроллинг
lParam
Если элемент системного меню был выбран с помощью мыши, это содержит координаты курсора мыши. X-координата сохранена в младшем слове, и y-координата сохранена в старшем слове

Пример

' Запускаем хранитель экрана

SendMessage hwnd, WM_SYSCOMMAND, ByVal SC_SCREENSAVE, ByVal 0&

' Другой пример ' Можно сворачивать, разворачивать, восстанавливать окно, ' но не изменять его размеры ' Код для модуля Public OldWindowProc As Long Declare Function CallWindowProc Lib "user32" Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Long, ByVal hwnd As Long, ByVal msg As Long, ByVal wParam As Long, lParam As WINDOWPOS) As Long Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long Public Const GWL_WNDPROC = (-4) Type WINDOWPOS hwnd As Long hWndInsertAfter As Long x As Long y As Long cx As Long cy As Long flags As Long End Type
' Обработка сообщения Public Function NewWindowProc(ByVal hwnd As Long, ByVal msg As Long, ByVal wParam As Long, lParam As WINDOWPOS) As Long Const WM_SYSCOMMAND = &H112 Const SC_SIZE = &HF000& ' Если сообщение WM_SYSCOMMAND If msg = WM_SYSCOMMAND Then ' Если команда SC_SIZE, то игнорируем If (wParam And &HFFF0) = SC_SIZE Then Exit Function End If NewWindowProc = CallWindowProc( _ OldWindowProc, hwnd, msg, wParam, _ lParam) End Function
' Код для Form_Load OldWindowProc = SetWindowLong( _ hwnd, GWL_WNDPROC, _ AddressOf NewWindowProc)

Смотри также

WM_COMMAND

Категория

Меню