Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Okno otrzymuje ten komunikat, gdy użytkownik wybierze polecenie z menu Okno (wcześniej znane jako menu systemowe lub sterujące) lub gdy użytkownik wybierze przycisk Maksymalizuj, zminimalizuj przycisk, przywróć przycisk lub zamknij przycisk.
#define WM_SYSCOMMAND 0x0112
Example
case WM_SYSCOMMAND:
if ((wParam & 0xFFF0) == SC_CLOSE)
{
EndDialog (hDlg, TRUE);
return(TRUE);
}
break;
Przykład z Windows Classic Samples w witrynie GitHub.
Parametry
-
wParam
-
Żądany typ polecenia systemowego. Cztery bity o niskiej kolejności parametru wParam są używane wewnętrznie przez system. Bity 4–15 zawierają kod polecenia, który może być jedną z następujących wartości.
Wartość Meaning - SC_CLOSE
- 0xF060
Zamyka okno. - SC_CONTEXTHELP
- 0xF180
Zmienia kursor na znak zapytania ze wskaźnikiem. Jeśli użytkownik kliknie kontrolkę w oknie dialogowym, kontrolka otrzyma komunikat WM_HELP . - SC_DEFAULT
- 0xF160
Wybiera element domyślny; użytkownik dwukrotnie kliknął menu okna. - SC_HOTKEY
- 0xF150
Aktywuje okno skojarzone z określonym przez aplikację kluczem gorącym. Parametr lParam identyfikuje okno do aktywowania. - SC_HSCROLL
- 0xF080
Przewija się w poziomie. - SC_KEYMENU
- 0xF100
Pobiera menu okna w wyniku naciśnięcia. Aby uzyskać więcej informacji, zobacz sekcję Uwagi. - SC_MAXIMIZE
- 0xF030
Maksymalizuje okno. - SC_MINIMIZE
- 0xF020
Minimalizuje okno. - SC_MONITORPOWER
- 0xF170
Ustawia stan wyświetlania. To polecenie obsługuje urządzenia z funkcjami oszczędzania energii, takimi jak komputer osobisty zasilany z baterii.
Parametr lParam może mieć następujące wartości:- -1 (wyświetlacz jest włączony)
- 1 (wyświetlacz będzie niski)
- 2 (ekran jest wyłączany)
- SC_MOUSEMENU
- 0xF090
Pobiera menu okna w wyniku kliknięcia myszą. - SC_MOVE
- 0xF010
Przenosi okno. - SC_NEXTWINDOW
- 0xF040
Przechodzi do następnego okna. - SC_PREVWINDOW
- 0xF050
Przechodzi do poprzedniego okna. - SC_RESTORE
- 0xF120
Przywraca normalne położenie i rozmiar okna. - SC_SCREENSAVE
- 0xF140
Wykonuje aplikację wygaszacza ekranu określoną w sekcji [boot] pliku System.ini. - SC_SIZE
- 0xF000
Rozmiary okna. - SC_TASKLIST
- 0xF130
Aktywuje menu Start . - SC_VSCROLL
- 0xF070
Przewija się w pionie. Jeśli kod polecenia jest SC_SCREENSAVE, następujące flagi są dostępne w czterech bitach o niskiej kolejności:
Flag Meaning - SCF_ISSECURE
- 0x0001
Wygaszacz ekranu jest bezpieczny. -
lParam
-
Wyraz o niskiej kolejności określa położenie kursora w poziomie, we współrzędnych ekranu, jeśli polecenie menu okna jest wybierane za pomocą myszy. W przeciwnym razie ten parametr nie jest używany.
Wyraz o wysokiej kolejności określa położenie kursora w pionie we współrzędnych ekranu, jeśli polecenie menu okna jest wybierane za pomocą myszy. Ten parametr jest 1, jeśli polecenie jest wybierane przy użyciu akceleratora systemu lub zero, jeśli używa mnemonic.
Wartość zwracana
Aplikacja powinna zwrócić zero, jeśli przetwarza ten komunikat.
Uwagi
Aby uzyskać współrzędne położenia we współrzędnych ekranu, użyj następującego kodu:
xPos = GET_X_LPARAM(lParam); // horizontal position
yPos = GET_Y_LPARAM(lParam); // vertical position
Funkcja DefWindowProc wykonuje żądanie menu okna dla wstępnie zdefiniowanych akcji określonych w poprzedniej tabeli.
W WM_SYSCOMMAND komunikatach cztery bity o niskiej kolejności parametru wParam są używane wewnętrznie przez system. Aby uzyskać kod polecenia z wartości wParam , aplikacja musi połączyć wartość 0xFFF0 z wartością wParam przy użyciu operatora bitowego AND, jak pokazano w powyższym przykładzie.
Elementy menu w menu okna można modyfikować przy użyciu funkcji GetSystemMenu, AppendMenu, InsertMenu, ModifyMenu, InsertMenuItem i SetMenuItemInfo . Aplikacje modyfikujące menu okna muszą przetwarzać komunikaty WM_SYSCOMMAND .
Aplikacja może w dowolnym momencie wykonać dowolne polecenie systemowe, przekazując komunikat WM_SYSCOMMAND do defWindowProc. Wszystkie komunikaty WM_SYSCOMMAND nieobsługiwane przez aplikację muszą być przekazywane do aplikacji DefWindowProc. Wszystkie wartości poleceń dodane przez aplikację muszą być przetwarzane przez aplikację i nie mogą być przekazywane do defWindowProc.
Jeśli ochrona haseł jest włączona przez zasady, wygaszacz ekranu jest uruchamiany niezależnie od tego, co aplikacja robi z powiadomieniem SC_SCREENSAVE , nawet jeśli nie można przekazać go do DefWindowProc.
Klucze akceleratora zdefiniowane do wybierania elementów z menu okna są tłumaczone na komunikaty WM_SYSCOMMAND ; wszystkie inne naciśnięcia akceleratora są tłumaczone na komunikaty WM_COMMAND .
Jeśli parametr wParam jest SC_KEYMENU, lParam zawiera kod znaku klucza, który jest używany z ALT do wyświetlania menu podręcznego. Na przykład naciśnięcie ALT+F w celu wyświetlenia wyskakującego okienka Plik spowoduje, że WM_SYSCOMMAND z parametrem wParamrównym SC_KEYMENU i lParam równy 'f'.
Requirements
| Wymaganie | Wartość |
|---|---|
| Minimalny obsługiwany klient |
Windows 2000 Professional [tylko aplikacje klasyczne] |
| Minimalny obsługiwany serwer |
Windows 2000 Server [tylko aplikacje klasyczne] |
| Header |
|
Zobacz także
-
Referencja
-
Pojęciowy