Jegyzet
Az oldalhoz való hozzáférés engedélyezést igényel. Próbálhatod be jelentkezni vagy könyvtárat váltani.
Az oldalhoz való hozzáférés engedélyezést igényel. Megpróbálhatod a könyvtár váltását.
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 |
|
Lásd még
-
Utalás
-
Koncepcionális