Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Okno obdrží tuto zprávu, když uživatel zvolí příkaz z nabídky Okno (dříve označované jako systémová nebo řídicí nabídka) nebo když uživatel zvolí tlačítko maximalizovat, tlačítko minimalizovat, obnovit tlačítko nebo zavřít tlačítko.
#define WM_SYSCOMMAND 0x0112
Example
case WM_SYSCOMMAND:
if ((wParam & 0xFFF0) == SC_CLOSE)
{
EndDialog (hDlg, TRUE);
return(TRUE);
}
break;
Příklad z klasických ukázek Windows na GitHubu.
Parametry
-
wParam
-
Byl požadován typ systémového příkazu. Systém používá čtyři bity s nízkým pořadím parametru wParam . Bity 4–15 obsahují kód příkazu, který může být jednou z následujících hodnot.
Hodnota Meaning - SC_CLOSE
- 0xF060
Zavře okno. - SC_CONTEXTHELP
- 0xF180
Změní kurzor na otazník s ukazatelem. Pokud uživatel potom klikne na ovládací prvek v dialogovém okně, ovládací prvek obdrží WM_HELP zprávu. - SC_DEFAULT
- 0xF160
Vybere výchozí položku; uživatel poklikal na nabídku okna. - SC_HOTKEY
- 0xF150
Aktivuje okno přidružené k klávesové zkratce zadané aplikaci. Parametr lParam identifikuje okno, které se má aktivovat. - SC_HSCROLL
- 0xF080
Posouvá vodorovně. - SC_KEYMENU
- 0xF100
Načte nabídku okna v důsledku stisknutí klávesy. Další informace najdete v části Poznámky. - SC_MAXIMIZE
- 0xF030
Maximalizuje okno. - SC_MINIMIZE
- 0xF020
Minimalizuje okno. - SC_MONITORPOWER
- 0xF170
Nastaví stav zobrazení. Tento příkaz podporuje zařízení, která mají funkce úspory energie, například osobní počítač s bateriemi.
Parametr lParam může mít následující hodnoty:- -1 (displej je zapnutý)
- 1 (displej se blíží nízkému výkonu)
- 2 (displej je vypnutý)
- SC_MOUSEMENU
- 0xF090
Načte nabídku okna v důsledku kliknutí myší. - SC_MOVE
- 0xF010
Přesune okno. - SC_NEXTWINDOW
- 0xF040
Přesune se do dalšího okna. - SC_PREVWINDOW
- 0xF050
Přesune se do předchozího okna. - SC_RESTORE
- 0xF120
Obnoví okno na normální pozici a velikost. - SC_SCREENSAVE
- 0xF140
Spustí aplikaci spořič obrazovky zadanou v části [boot] souboru System.ini. - SC_SIZE
- 0xF000
Velikost okna. - SC_TASKLIST
- 0xF130
Aktivuje nabídku Start . - SC_VSCROLL
- 0xF070
Posouvá svisle. Pokud je kód příkazu SC_SCREENSAVE, jsou ve čtyřech bitech s nízkým pořadím k dispozici následující příznaky:
Flag Meaning - SCF_ISSECURE
- 0x0001
Spořič obrazovky je zabezpečený. -
lParam
-
Slovo s nízkým pořadím určuje vodorovnou pozici kurzoru v souřadnicích obrazovky, pokud je vybrán příkaz nabídky okna s myší. V opačném případě se tento parametr nepoužívá.
Slovo ve vysokém pořadí určuje svislou pozici kurzoru v souřadnicích obrazovky, pokud je vybrán příkaz nabídky okna s myší. Tento parametr je 1, pokud je příkaz zvolen pomocí systémového akcelerátoru nebo nula, pokud používá mnemonic.
Návratová hodnota
Pokud aplikace zpracuje tuto zprávu, měla by vrátit nulu.
Poznámky
Chcete-li získat souřadnice pozice v souřadnicích obrazovky, použijte následující kód:
xPos = GET_X_LPARAM(lParam); // horizontal position
yPos = GET_Y_LPARAM(lParam); // vertical position
Funkce DefWindowProc provádí požadavek na nabídku okna pro předdefinované akce zadané v předchozí tabulce.
Ve WM_SYSCOMMAND zprávy systém interně používá čtyři bity wParam parametru s nízkým pořadím . Chcete-li získat kód příkazu z hodnoty wParam , musí aplikace kombinovat hodnotu 0xFFF0 s hodnotou wParam pomocí bitové operátor AND, jak je znázorněno v příkladu výše.
Položky nabídky v nabídce okna lze upravit pomocí funkcí GetSystemMenu, AppendMenu, InsertMenu, ModifyMenu, InsertMenuItem a SetMenuItemInfo . Aplikace, které upravují nabídku okna, musí zpracovávat WM_SYSCOMMAND zprávy.
Aplikace může kdykoli provést jakýkoli systémový příkaz předáním zprávy WM_SYSCOMMANDdefWindowProc. Všechny WM_SYSCOMMAND zprávy, které aplikace nezpracuje, musí být předány defWindowProc. Všechny hodnoty příkazů přidané aplikací musí být zpracovány aplikací a nelze je předat defWindowProc.
Pokud zásady povolí ochranu heslem, spustí se spořič obrazovky bez ohledu na to, co aplikace dělá s oznámením SC_SCREENSAVE , i když se mu nepodaří předat defWindowProc.
Klávesy akcelerátoru definované pro výběr položek z nabídky okna se přeloží do WM_SYSCOMMAND zpráv; Všechny ostatní klávesové zkratky se přeloží do WM_COMMAND zpráv.
Pokud je wParamSC_KEYMENU, lParam obsahuje kód znaku klíče, který se používá s klávesou ALT k zobrazení místní nabídky. Když například stisknete ALT+F, aby se zobrazilo místní okno Soubor, způsobí WM_SYSCOMMAND s wParam , který se rovná SC_KEYMENU a lParam se rovná f.
Požadavky
| Požadavek | Hodnota |
|---|---|
| Minimální podporovaný klient |
Windows 2000 Professional [jenom desktopové aplikace] |
| Minimální podporovaný server |
Windows 2000 Server [jenom desktopové aplikace] |
| Header |
|