Not
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Ett fönster tar emot det här meddelandet när användaren väljer ett kommando från menyn Fönster (kallades tidigare system- eller kontrollmenyn) eller när användaren väljer knappen Maximera, minimera knappen, återställningsknappen eller stäng knappen.
#define WM_SYSCOMMAND 0x0112
Example
case WM_SYSCOMMAND:
if ((wParam & 0xFFF0) == SC_CLOSE)
{
EndDialog (hDlg, TRUE);
return(TRUE);
}
break;
Exempel från klassiska Windows-exempel på GitHub.
Parameterar
-
wParam
-
Typ av systemkommando som begärs. De fyra lågordningsbitarna i wParam-parametern används internt av systemet. Bits 4-15 innehåller en kommandokod som kan vara ett av följande värden.
Värde Meaning - SC_CLOSE
- 0xF060
Stänger fönstret. - SC_CONTEXTHELP
- 0xF180
Ändrar markören till ett frågetecken med en pekare. Om användaren sedan klickar på en kontroll i dialogrutan får kontrollen ett WM_HELP meddelande. - SC_DEFAULT
- 0xF160
Väljer standardobjektet. dubbelklickat på fönstermenyn. - SC_HOTKEY
- 0xF150
Aktiverar fönstret som är associerat med den programdefinierade snabbnyckeln. Parametern lParam identifierar fönstret som ska aktiveras. - SC_HSCROLL
- 0xF080
Rullar vågrätt. - SC_KEYMENU
- 0xF100
Hämtar fönstermenyn som ett resultat av en tangenttryckning. Mer information finns i avsnittet Anmärkningar. - SC_MAXIMIZE
- 0xF030
Maximerar fönstret. - SC_MINIMIZE
- 0xF020
Minimerar fönstret. - SC_MONITORPOWER
- 0xF170
Anger visningstillståndet. Det här kommandot stöder enheter som har energisparfunktioner, till exempel en batteridriven persondator.
Parametern lParam kan ha följande värden:- -1 (skärmen är aktiverad)
- 1 (skärmen kommer att ha låg effekt)
- 2 (skärmen stängs av)
- SC_MOUSEMENU
- 0xF090
Hämtar fönstermenyn som ett resultat av ett musklick. - SC_MOVE
- 0xF010
Flyttar fönstret. - SC_NEXTWINDOW
- 0xF040
Flyttas till nästa fönster. - SC_PREVWINDOW
- 0xF050
Flyttar till föregående fönster. - SC_RESTORE
- 0xF120
Återställer fönstret till sin normala position och storlek. - SC_SCREENSAVE
- 0xF140
Kör skärmsläckarprogrammet som anges i avsnittet [boot] i System.ini-filen. - SC_SIZE
- 0xF000
Storleksanpassar fönstret. - SC_TASKLIST
- 0xF130
Aktiverar Start-menyn . - SC_VSCROLL
- 0xF070
Rullar lodrätt. Om kommandokoden är SC_SCREENSAVE är följande flaggor tillgängliga i de fyra lågordningsbitarna:
Flag Meaning - SCF_ISSECURE
- 0x0001
Skärmsläckaren är säker. -
lParam
-
Ordet med låg ordning anger markörens vågräta position, i skärmkoordinater, om ett fönstermenykommando väljs med musen. Annars används inte den här parametern.
Ordet med hög ordning anger markörens lodräta position, i skärmkoordinater, om ett fönstermenykommando väljs med musen. Den här parametern är 1 om kommandot väljs med hjälp av en systemaccelerator eller noll om du använder en mnemonic.
Returvärde
Ett program bör returnera noll om det bearbetar det här meddelandet.
Anmärkningar
Använd följande kod för att hämta positionskoordinaterna i skärmkoordinater:
xPos = GET_X_LPARAM(lParam); // horizontal position
yPos = GET_Y_LPARAM(lParam); // vertical position
Funktionen DefWindowProc utför en fönstermenybegäran för de fördefinierade åtgärder som anges i föregående tabell.
I WM_SYSCOMMAND meddelanden används de fyra lågordningsbitarna i wParam-parametern internt av systemet. För att hämta kommandokoden från wParam-värdet måste ett program kombinera värdet 0xFFF0 med wParam-värdet med hjälp av bitvis AND-operatorn, som du ser i exemplet ovan.
Menyalternativen i en fönstermeny kan ändras med hjälp av funktionerna GetSystemMenu, AppendMenu, InsertMenu, ModifyMenu, InsertMenuItem och SetMenuItemInfo . Program som ändrar fönstermenyn måste bearbeta WM_SYSCOMMAND meddelanden.
Ett program kan när som helst utföra valfritt systemkommando genom att skicka ett WM_SYSCOMMAND meddelande till DefWindowProc. Alla WM_SYSCOMMAND meddelanden som inte hanteras av programmet måste skickas till DefWindowProc. Alla kommandovärden som läggs till av ett program måste bearbetas av programmet och kan inte skickas till DefWindowProc.
Om lösenordsskydd är aktiverat av principen startas skärmsläckaren oavsett vad ett program gör med SC_SCREENSAVE-meddelandet även om det inte går att skicka det till DefWindowProc.
Acceleratornycklar som har definierats för att välja objekt från fönstermenyn översätts till WM_SYSCOMMAND meddelanden. alla andra tangenttryckningar i acceleratorn översätts till WM_COMMAND meddelanden.
Om wParamär SC_KEYMENU innehåller lParam teckenkoden för nyckeln som används med ALT-tangenten för att visa popup-menyn. Om du till exempel trycker på ALT+F för att visa popup-fönstret Arkiv, orsakas en WM_SYSCOMMAND med wParam lika med SC_KEYMENU och lParam lika med "f".
Kravspecifikation
| Krav | Värde |
|---|---|
| Lägsta klient som stöds |
Windows 2000 Professional [endast skrivbordsappar] |
| Lägsta server som stöds |
Windows 2000 Server [endast skrivbordsappar] |
| Header |
|