Condividi tramite


messaggio di WM_SYSCOMMAND

Una finestra riceve questo messaggio quando l'utente sceglie un comando dal menu Finestra (in precedenza noto come menu di sistema o controllo) o quando l'utente sceglie il pulsante ingrandisci, riduci a icona, ripristina pulsante o chiudi.

#define WM_SYSCOMMAND                   0x0112

Esempio

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

Esempio di esempi classici di Windows in GitHub.

Parametri

wParam

Tipo di comando di sistema richiesto. Questo parametro può avere uno dei valori seguenti.

Valore Significato
SC_CLOSE
0xF060
Chiude la finestra.
SC_CONTEXTHELP
0xF180
Imposta il cursore su un punto interrogativo con un puntatore. Se l'utente fa clic su un controllo nella finestra di dialogo, il controllo riceve un messaggio di WM_HELP .
SC_DEFAULT
0xF160
Seleziona l'elemento predefinito; l'utente ha fatto doppio clic sul menu della finestra.
SC_HOTKEY
0xF150
Attiva la finestra associata al tasto di scelta rapida specificato dall'applicazione. Il parametro lParam identifica la finestra da attivare.
SC_HSCROLL
0xF080
Scorre orizzontalmente.
SCF_ISSECURE
0x00000001
Indica se lo screen saver è sicuro.
SC_KEYMENU
0xF100
Recupera il menu della finestra in seguito a una sequenza di tasti. Per altre informazioni, vedere la sezione Osservazioni.
SC_MAXIMIZE
0xF030
Ingrandisce la finestra.
SC_MINIMIZE
0xF020
Riduce a icona la finestra.
SC_MONITORPOWER
0xF170
Imposta lo stato della visualizzazione. Questo comando supporta i dispositivi con funzionalità di risparmio energia, ad esempio un personal computer alimentato a batteria.
Il parametro lParam può avere i valori seguenti:
  • -1 (lo schermo è acceso)
  • 1 (lo schermo sta andando a basso consumo)
  • 2 (lo schermo è in fase di chiusura)
SC_MOUSEMENU
0xF090
Recupera il menu della finestra in seguito a un clic del mouse.
SC_MOVE
0xF010
Sposta la finestra.
SC_NEXTWINDOW
0xF040
Passa alla finestra successiva.
SC_PREVWINDOW
0xF050
Passa alla finestra precedente.
SC_RESTORE
0xF120
Ripristina la posizione e le dimensioni normali della finestra.
SC_SCREENSAVE
0xF140
Esegue l'applicazione screen saver specificata nella sezione [boot] del file System.ini.
SC_SIZE
0xF000
Ridimensiona la finestra.
SC_TASKLIST
0xF130
Attiva il menu Start .
SC_VSCROLL
0xF070
Scorre verticalmente.

lParam

La parola in ordine basso specifica la posizione orizzontale del cursore, nelle coordinate dello schermo, se viene scelto un comando di menu della finestra con il mouse. In caso contrario, questo parametro non viene usato.

La parola di ordine elevato specifica la posizione verticale del cursore, nelle coordinate dello schermo, se viene scelto un comando di menu della finestra con il mouse. Questo parametro è 1 se il comando viene scelto usando un acceleratore di sistema oppure zero se si usa un mnemonico.

Valore restituito

Un'applicazione deve restituire zero se elabora questo messaggio.

Commenti

Per ottenere le coordinate di posizione nelle coordinate dello schermo, usare il codice seguente:

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

La funzione DefWindowProc esegue la richiesta di menu della finestra per le azioni predefinite specificate nella tabella precedente.

Nei messaggi WM_SYSCOMMAND , i quattro bit di ordine basso del parametro wParam vengono usati internamente dal sistema. Per ottenere il risultato corretto durante il test del valore di wParam, un'applicazione deve combinare il valore 0xFFF0 con il valore wParam usando l'operatore AND bit per bit.

Le voci di menu di un menu finestra possono essere modificate usando le funzioni GetSystemMenu, AppendMenu, InsertMenu, ModifyMenu, InsertMenuItem e SetMenuItemInfo . Le applicazioni che modificano il menu della finestra devono elaborare WM_SYSCOMMAND messaggi.

Un'applicazione può eseguire qualsiasi comando di sistema in qualsiasi momento passando un messaggio di WM_SYSCOMMAND a DefWindowProc. Tutti i messaggi WM_SYSCOMMAND non gestiti dall'applicazione devono essere passati a DefWindowProc. Tutti i valori di comando aggiunti da un'applicazione devono essere elaborati dall'applicazione e non possono essere passati a DefWindowProc.

Se la protezione password è abilitata dai criteri, lo screen saver viene avviato indipendentemente dal funzionamento di un'applicazione con la notifica di SC_SCREENSAVE anche se non riesce a passarlo a DefWindowProc.

I tasti di scelta rapida definiti per scegliere gli elementi dal menu della finestra vengono convertiti in messaggi WM_SYSCOMMAND ; tutte le altre sequenze di tasti di scelta rapida vengono convertite in messaggi WM_COMMAND .

Se wParam è SC_KEYMENU, lParam contiene il codice carattere della chiave utilizzata con il tasto ALT per visualizzare il menu popup. Ad esempio, premendo ALT+F per visualizzare il popup File verrà generato un WM_SYSCOMMAND con wParam uguale a SC_KEYMENU e lParam uguale a 'f'.

Requisiti

Requisito Valore
Client minimo supportato
Windows 2000 Professional [solo app desktop]
Server minimo supportato
Windows 2000 Server [solo app desktop]
Intestazione
Winuser.h (include Windows.h)

Vedi anche

Riferimento

AppendMenu

DefWindowProc

GET_X_LPARAM

GET_Y_LPARAM

GetSystemMenu

InsertMenu

ModifyMenu

WM_COMMAND

Informazioni concettuali

Acceleratori di tastiera