Megosztás:


WM_SYSCOMMAND üzenet

Az ablak akkor kapja meg ezt az üzenetet, ha a felhasználó választ egy parancsot az Ablak menüből (korábbi nevén rendszer- vagy vezérlőmenüből), vagy amikor a felhasználó a teljes méret gombot, a Kis méret gombot, a Visszaállítás gombot vagy a Bezárás gombot választja.

#define WM_SYSCOMMAND                   0x0112

Example

 case WM_SYSCOMMAND:
        if ((wParam & 0xFFF0) == SC_CLOSE)
        {
            EndDialog (hDlg, TRUE);
            return(TRUE);
        }
        break;

Példa a GitHubon Klasszikus Windows-minták.

Paraméterek

wParam

A kért rendszerparancs típusa. A wParam paraméter négy alacsonyrendű bitét a rendszer belsőleg használja. A 4–15. bitek olyan parancskódot tartalmaznak, amely az alábbi értékek egyike lehet.

Érték Meaning
SC_CLOSE
0xF060
Bezárja az ablakot.
SC_CONTEXTHELP
0xF180
A kurzort kérdőjelre módosítja egy mutatóval. Ha a felhasználó ezután egy vezérlőre kattint a párbeszédpanelen, a vezérlő egy WM_HELP üzenetet kap.
SC_DEFAULT
0xF160
Kiválasztja az alapértelmezett elemet; a felhasználó duplán az ablakmenüre kattintott.
SC_HOTKEY
0xF150
Aktiválja az alkalmazás által megadott gyorsbillentyűhöz társított ablakot. Az lParam paraméter azonosítja az aktiválandó ablakot.
SC_HSCROLL
0xF080
Vízszintesen görget.
SC_KEYMENU
0xF100
Lekéri az ablakmenüt egy billentyűleütés eredményeként. További információkért lásd a Megjegyzések szakaszt.
SC_MAXIMIZE
0xF030
Teljes méretűre állítja az ablakot.
SC_MINIMIZE
0xF020
Kis méretűre csökkenti az ablakot.
SC_MONITORPOWER
0xF170
Beállítja a megjelenítés állapotát. Ez a parancs támogatja azokat az eszközöket, amelyek energiatakarékos funkciókkal rendelkeznek, például akkumulátoros személyi számítógépekkel.
Az lParam paraméter a következő értékekkel rendelkezhet:
  • -1 (a kijelző be van kapcsolva)
  • 1 (a kijelző alacsony energiaigényű lesz)
  • 2 (a kijelző ki van kapcsolva)
SC_MOUSEMENU
0xF090
Egy kattintással lekéri az ablakmenüt.
SC_MOVE
0xF010
Áthelyezi az ablakot.
SC_NEXTWINDOW
0xF040
Ugrás a következő ablakra.
SC_PREVWINDOW
0xF050
Ugrás az előző ablakra.
SC_RESTORE
0xF120
Visszaállítja az ablakot a normál helyzetére és méretére.
SC_SCREENSAVE
0xF140
Végrehajtja a System.ini fájl [boot] szakaszában megadott képernyőkímélő alkalmazást.
SC_SIZE
0xF000
Méretezi az ablakot.
SC_TASKLIST
0xF130
Aktiválja a Start menüt.
SC_VSCROLL
0xF070
Függőlegesen görget.

Ha a parancskód SC_SCREENSAVE, akkor a következő jelölők érhetők el a négy alacsonyrendű bitben:

Flag Meaning
SCF_ISSECURE
0x0001
A képernyőkímélő biztonságos.

lParam

Az alacsonyrendű szó a kurzor vízszintes pozícióját adja meg a képernyő koordinátáiban, ha az egérrel egy ablakmenüparancs van kiválasztva. Ellenkező esetben a rendszer nem használja ezt a paramétert.

A magasrendű szó a kurzor függőleges pozícióját adja meg képernyőkoordinátákban, ha az egérrel egy ablakmenüparancsot választ. Ez a paraméter 1, ha a parancsot rendszergyorsítóval, mnemonikus használata esetén nullával választja ki.

Visszaadott érték

Az alkalmazásnak nullát kell visszaadnia, ha feldolgozza ezt az üzenetet.

Megjegyzések

A képernyőkoordináták pozíciókoordinátáinak lekéréséhez használja a következő kódot:

xPos = GET_X_LPARAM(lParam);    // horizontal position 
yPos = GET_Y_LPARAM(lParam);    // vertical position

A DefWindowProc függvény végrehajtja az ablak menükérelmét az előző táblázatban megadott előre definiált műveletekhez.

WM_SYSCOMMAND üzenetekben a wParam paraméter négy alacsonyrendű bitje belsőleg használatos. A parancskód wParam értékből való lekéréséhez az alkalmazásnak a bitenkénti AND operátorral kell kombinálnia a 0xFFF0 értéket a wParam értékkel, ahogyan a fenti példában is látható.

Az ablakmenü menüelemei a GetSystemMenu, AppendMenu, InsertMenu, ModifyMenu, InsertMenu, InsertMenuItem és SetMenuItemInfo függvény használatával módosíthatók. Az ablakmenüt módosító alkalmazásoknak WM_SYSCOMMAND üzeneteket kell feldolgozni.

Az alkalmazások bármikor végrehajthatnak bármilyen rendszerparancsot, ha egy WM_SYSCOMMAND üzenetet továbbítanak a DefWindowProc-nak. Az alkalmazás által nem kezelt WM_SYSCOMMAND üzeneteket át kell adni a DefWindowProc-nak. Az alkalmazás által hozzáadott parancsértékeket az alkalmazásnak kell feldolgoznia, és nem lehet átadni a DefWindowProc-nak.

Ha a házirend engedélyezi a jelszóvédelmet, a képernyőkímélő attól függetlenül elindul, hogy az alkalmazás mit tesz a SC_SCREENSAVE értesítéssel, még akkor is, ha nem továbbítja azt a DefWindowProc-nak.

Az ablakmenü elemeinek kiválasztásához definiált gyorsítókulcsok WM_SYSCOMMAND üzenetekre lesznek lefordítva; az összes többi gyorsítóbillentyű le lesz fordítva WM_COMMAND üzenetekre.

Ha a wParamSC_KEYMENU, az lParam tartalmazza annak a kulcsnak a karakterkódját, amelyet az ALT billentyűvel használnak az előugró menü megjelenítéséhez. Ha például az ALT+F billentyűkombinációt lenyomva jelenik meg a Fájl előugró ablak, akkor a WM_SYSCOMMANDa wParam értéke SC_KEYMENU , az lParam pedig "f" lesz.

Requirements

Követelmény Érték
Minimálisan támogatott ügyfél
Windows 2000 Professional [csak asztali alkalmazások]
Minimálisan támogatott kiszolgáló
Windows 2000 Server [csak asztali alkalmazások]
Header
Winuser.h (a Windows.h is)

Lásd még

Utalás

AppendMenu

DefWindowProc

GET_X_LPARAM

GET_Y_LPARAM

GetSystemMenu

InsertMenu

ModifyMenu

WM_COMMAND

Koncepcionális

Billentyűzetgyorsítók