Delen via


WM_SYSCOMMAND bericht

Een venster ontvangt dit bericht wanneer de gebruiker een opdracht kiest in het menu Venster (voorheen systeem- of besturingsmenu genoemd) of wanneer de gebruiker de knop maximaliseren kiest, knop minimaliseren, knop herstellen of knop sluiten.

#define WM_SYSCOMMAND                   0x0112

Example

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

Voorbeeld uit klassieke Windows-voorbeelden op GitHub.

Parameterwaarden

wParam

Het type systeemopdracht dat is aangevraagd. De vier bits met lage volgorde van de parameter wParam worden intern door het systeem gebruikt. Bits 4-15 bevatten een opdrachtcode die een van de volgende waarden kan zijn.

Waarde Meaning
SC_CLOSE
0xF060
Hiermee sluit u het venster.
SC_CONTEXTHELP
0xF180
Hiermee wijzigt u de cursor in een vraagteken met een aanwijzer. Als de gebruiker vervolgens op een besturingselement in het dialoogvenster klikt, ontvangt het besturingselement een WM_HELP bericht.
SC_DEFAULT
0xF160
Hiermee selecteert u het standaarditem; de gebruiker dubbelklikt op het venstermenu.
SC_HOTKEY
0xF150
Hiermee activeert u het venster dat is gekoppeld aan de door de toepassing opgegeven sneltoets. De parameter lParam identificeert het venster dat moet worden geactiveerd.
SC_HSCROLL
0xF080
Schuift horizontaal.
SC_KEYMENU
0xF100
Hiermee haalt u het venstermenu op als gevolg van een toetsaanslag. Zie de sectie Opmerkingen voor meer informatie.
SC_MAXIMIZE
0xF030
Hiermee maximaliseert u het venster.
SC_MINIMIZE
0xF020
Hiermee wordt het venster geminimaliseerd.
SC_MONITORPOWER
0xF170
Hiermee stelt u de status van de weergave in. Deze opdracht biedt ondersteuning voor apparaten met energiebesparende functies, zoals een computer met accuvoeding.
De parameter lParam kan de volgende waarden hebben:
  • -1 (het beeldscherm wordt ingeschakeld)
  • 1 (het beeldscherm zal weinig vermogen hebben)
  • 2 (het beeldscherm wordt afgesloten)
SC_MOUSEMENU
0xF090
Hiermee haalt u het venstermenu op als gevolg van een muisklik.
SC_MOVE
0xF010
Hiermee verplaatst u het venster.
SC_NEXTWINDOW
0xF040
Naar het volgende venster gaan.
SC_PREVWINDOW
0xF050
Naar het vorige venster gaan.
SC_RESTORE
0xF120
Hiermee herstelt u het venster naar de normale positie en grootte.
SC_SCREENSAVE
0xF140
Hiermee wordt de toepassing voor schermbeveiliging uitgevoerd die is opgegeven in de sectie [boot] van het System.ini-bestand.
SC_SIZE
0xF000
Hiermee wordt het venster groter.
SC_TASKLIST
0xF130
Hiermee activeert u het startmenu .
SC_VSCROLL
0xF070
Schuift verticaal.

Als de opdrachtcode is SC_SCREENSAVE, zijn de volgende vlaggen beschikbaar in de vier bits met lage volgorde:

Flag Meaning
SCF_ISSECURE
0x0001
De schermbeveiliging is veilig.

lParam-

Het woord met lage volgorde geeft de horizontale positie van de cursor op, in schermcoördinaten, als een opdracht voor het venstermenu met de muis wordt gekozen. Anders wordt deze parameter niet gebruikt.

Het woord met hoge volgorde geeft de verticale positie van de cursor op, in schermcoördinaten, als een opdracht voor het venstermenu met de muis wordt gekozen. Deze parameter is 1 als de opdracht wordt gekozen met behulp van een systeemversneller of nul als u een nemonic gebruikt.

Retourwaarde

Een toepassing moet nul retourneren als dit bericht wordt verwerkt.

Opmerkingen

Gebruik de volgende code om de positiecoördinaten in schermcoördinaten op te halen:

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

De functie DefWindowProc voert de venstermenuaanvraag uit voor de vooraf gedefinieerde acties die zijn opgegeven in de vorige tabel.

In WM_SYSCOMMAND berichten worden de vier bits met lage volgorde van de parameter wParam intern gebruikt door het systeem. Als u de opdrachtcode wilt ophalen uit de wParam-waarde , moet een toepassing de waarde 0xFFF0 combineren met de wParam-waarde met behulp van de bitsgewijze AND-operator, zoals wordt weergegeven in het bovenstaande voorbeeld.

De menu-items in een venstermenu kunnen worden gewijzigd met behulp van de functies GetSystemMenu, AppendMenu, InsertMenu, ModifyMenu, InsertMenuItem en SetMenuItemInfo . Toepassingen die het venstermenu wijzigen, moeten WM_SYSCOMMAND berichten verwerken.

Een toepassing kan elke systeemopdracht op elk gewenst moment uitvoeren door een WM_SYSCOMMAND bericht door te geven aan DefWindowProc. Alle WM_SYSCOMMAND berichten die niet door de toepassing worden verwerkt, moeten worden doorgegeven aan DefWindowProc. Opdrachten die door een toepassing worden toegevoegd, moeten door de toepassing worden verwerkt en kunnen niet worden doorgegeven aan DefWindowProc.

Als wachtwoordbeveiliging is ingeschakeld op basis van beleid, wordt de schermbeveiliging gestart, ongeacht wat een toepassing doet met de SC_SCREENSAVE melding, zelfs als deze niet kan worden doorgegeven aan DefWindowProc.

Sneltoetsen die zijn gedefinieerd om items in het venstermenu te kiezen, worden omgezet in WM_SYSCOMMAND berichten; alle andere toetsaanslagen op de accelerator worden omgezet in WM_COMMAND berichten.

Als de wParamis SC_KEYMENU, bevat lParam de tekencode van de sleutel die wordt gebruikt met de Alt-toets om het pop-upmenu weer te geven. Als u bijvoorbeeld op Alt+F drukt om het pop-upvenster Bestand weer te geven, wordt er een WM_SYSCOMMAND met wParam gelijk aan SC_KEYMENU en lParam gelijk aan f.

Requirements

Requirement Waarde
Minimaal ondersteunde client
Windows 2000 Professional [alleen desktop-apps]
Minimaal ondersteunde server
Windows 2000 Server [alleen desktop-apps]
Header
Winuser.h (inclusief Windows.h)

Zie ook

Verwijzing

Menu Toevoegen

DefWindowProc

GET_X_LPARAM

GET_Y_LPARAM

GetSystemMenu

Menu Invoegen

Menu Wijzigen

WM_COMMAND

Conceptuele

Toetsenbordversnellers