Sdílet prostřednictvím


WM_SYSCOMMAND zpráva

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
Winuser.h (včetně Windows.h)

Viz také

Odkaz

AppendMenu

DefWindowProc

GET_X_LPARAM

GET_Y_LPARAM

GetSystemMenu

InsertMenu

ModifyMenu

WM_COMMAND

Koncepční

Klávesové zkratky