Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Uma janela recebe essa mensagem quando o usuário escolhe um comando no menu Janela (anteriormente conhecido como menu de sistema ou controle) ou quando o usuário escolhe o botão maximizar, minimizar botão, botão restaurar ou fechar.
#define WM_SYSCOMMAND 0x0112
Example
case WM_SYSCOMMAND:
if ((wParam & 0xFFF0) == SC_CLOSE)
{
EndDialog (hDlg, TRUE);
return(TRUE);
}
break;
Exemplo de de Exemplos Clássicos do Windows no GitHub.
Parâmetros
-
wParam
-
O tipo de comando do sistema solicitado. Os quatro bits de ordem baixa do parâmetro wParam são usados internamente pelo sistema. Os bits 4-15 contêm um código de comando que pode ser um dos valores a seguir.
Value Meaning - SC_CLOSE
- 0xF060
Fecha a janela. - SC_CONTEXTHELP
- 0xF180
Altera o cursor para um ponto de interrogação com um ponteiro. Se o usuário clicar em um controle na caixa de diálogo, o controle receberá um WM_HELP mensagem. - SC_DEFAULT
- 0xF160
Seleciona o item padrão; o usuário clicou duas vezes no menu da janela. - SC_HOTKEY
- 0xF150
Ativa a janela associada à chave de acesso especificada pelo aplicativo. O parâmetro lParam identifica a janela a ser ativada. - SC_HSCROLL
- 0xF080
Rola horizontalmente. - SC_KEYMENU
- 0xF100
Recupera o menu da janela como resultado de um pressionamento de tecla. Para obter mais informações, consulte a seção Comentários. - SC_MAXIMIZE
- 0xF030
Maximiza a janela. - SC_MINIMIZE
- 0xF020
Minimiza a janela. - SC_MONITORPOWER
- 0xF170
Define o estado da exibição. Esse comando dá suporte a dispositivos que têm recursos de economia de energia, como um computador pessoal movido a bateria.
O parâmetro lParam pode ter os seguintes valores:- -1 (a exibição está ativada)
- 1 (a exibição está indo para baixa potência)
- 2 (a exibição está sendo desligada)
- SC_MOUSEMENU
- 0xF090
Recupera o menu da janela como resultado de um clique do mouse. - SC_MOVE
- 0xF010
Move a janela. - SC_NEXTWINDOW
- 0xF040
Move-se para a próxima janela. - SC_PREVWINDOW
- 0xF050
Move para a janela anterior. - SC_RESTORE
- 0xF120
Restaura a janela para sua posição e tamanho normais. - SC_SCREENSAVE
- 0xF140
Executa o aplicativo de salvamento de tela especificado na seção [inicialização] do arquivo System.ini. - SC_SIZE
- 0xF000
Dimensiona a janela. - SC_TASKLIST
- 0xF130
Ativa o menu Iniciar . - SC_VSCROLL
- 0xF070
Rola verticalmente. Se o código de comando for SC_SCREENSAVE, os seguintes sinalizadores estarão disponíveis nos quatro bits de ordem baixa:
Flag Meaning - SCF_ISSECURE
- 0x0001
O protetor de tela é seguro. -
lParam
-
A palavra de ordem baixa especifica a posição horizontal do cursor, nas coordenadas da tela, se um comando de menu de janela for escolhido com o mouse. Caso contrário, esse parâmetro não será usado.
A palavra de alta ordem especifica a posição vertical do cursor, nas coordenadas da tela, se um comando de menu de janela for escolhido com o mouse. Esse parâmetro será 1 se o comando for escolhido usando um acelerador do sistema ou zero se estiver usando um mnemônico.
Valor de retorno
Um aplicativo deverá retornar zero se processar essa mensagem.
Observações
Para obter as coordenadas de posição nas coordenadas de tela, use o seguinte código:
xPos = GET_X_LPARAM(lParam); // horizontal position
yPos = GET_Y_LPARAM(lParam); // vertical position
A função DefWindowProc executa a solicitação de menu de janela para as ações predefinidas especificadas na tabela anterior.
Em WM_SYSCOMMAND mensagens, os quatro bits de ordem baixa do parâmetro wParam são usados internamente pelo sistema. Para obter o código de comando do valor wParam , um aplicativo deve combinar o valor 0xFFF0 com o valor wParam usando o operador AND bit a bit, conforme mostrado no exemplo acima.
Os itens de menu em um menu de janela podem ser modificados usando as funções GetSystemMenu, AppendMenu, InsertMenu, ModifyMenu, InsertMenuItem e SetMenuItemInfo . Os aplicativos que modificam o menu da janela devem processar mensagens WM_SYSCOMMAND .
Um aplicativo pode executar qualquer comando do sistema a qualquer momento passando uma mensagem WM_SYSCOMMAND para DefWindowProc. Qualquer WM_SYSCOMMAND mensagens não tratadas pelo aplicativo deve ser passada para DefWindowProc. Todos os valores de comando adicionados por um aplicativo devem ser processados pelo aplicativo e não podem ser passados para DefWindowProc.
Se a proteção por senha estiver habilitada pela política, o salvamento de tela será iniciado independentemente do que um aplicativo faz com a notificação de SC_SCREENSAVE mesmo que não a passe para DefWindowProc.
As teclas de acelerador definidas para escolher itens no menu da janela são convertidas em mensagens WM_SYSCOMMAND ; todos os outros pressionamentos de teclas de acelerador são convertidos em mensagens WM_COMMAND .
Se o wParam for SC_KEYMENU, lParam conterá o código de caractere da chave usada com a chave ALT para exibir o menu pop-up. Por exemplo, pressionar ALT+F para exibir o pop-up arquivo causará uma WM_SYSCOMMAND com wParam igual a SC_KEYMENU e lParam igual a 'f'.
Requirements
| Requirement | Value |
|---|---|
| Cliente mínimo com suporte |
Windows 2000 Professional [somente aplicativos da área de trabalho] |
| Servidor mínimo com suporte |
Windows 2000 Server [somente aplicativos da área de trabalho] |
| Header |
|
Consulte também
-
Referência
-
Conceitual