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 |
|
Vedi anche
-
Riferimento
-
Informazioni concettuali