Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Uma janela recebe esta mensagem quando o utilizador escolhe um comando do menu Janela (anteriormente conhecido como sistema ou menu de controlo) ou quando o utilizador escolhe o botão de maximizar, minimizar, 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 seguintes valores.
Valor Meaning - SC_CLOSE
- 0xF060
Fecha a janela. - SC_CONTEXTHELP
- 0xF180
Muda o cursor para um ponto de interrogação com um apontador. Se o utilizador clicar num controlo na caixa de diálogo, o controlo recebe uma mensagem WM_HELP . - SC_DEFAULT
- 0xF160
Seleciona o item padrão; O utilizador fez duplo clique no menu da janela. - SC_HOTKEY
- 0xF150
Ativa a janela associada à tecla de atalho especificada pela aplicação. O parâmetro IParam identifica a janela a ativar. - SC_HSCROLL
- 0xF080
Pergam horizontalmente. - SC_KEYMENU
- 0xF100
Recupera o menu da janela como resultado de uma tecla. Para obter mais informações, consulte a seção Observações. - SC_MAXIMIZE
- 0xF030
Maximiza a janela. - SC_MINIMIZE
- 0xF020
Minimiza a janela. - SC_MONITORPOWER
- 0xF170
Define o estado do ecrã. Este comando suporta dispositivos que possuem funcionalidades de poupança de energia, como um computador pessoal alimentado por bateria.
O parâmetro lParam pode ter os seguintes valores:- -1 (o ecrã está a ligar)
- 1 (o ecrã vai ficar de baixo consumo)
- 2 (o ecrã está a ser desligado)
- SC_MOUSEMENU
- 0xF090
Recupera o menu da janela como resultado de um clique do rato. - SC_MOVE
- 0xF010
Move a janela. - SC_NEXTWINDOW
- 0xF040
Passa para a próxima janela. - SC_PREVWINDOW
- 0xF050
Passa para a janela anterior. - SC_RESTORE
- 0xF120
Restaura a janela à sua posição e tamanho normais. - SC_SCREENSAVE
- 0xF140
Executa a aplicação de protetor de ecrã especificada na secção [boot] do ficheiro System.ini. - SC_SIZE
- 0xF000
Dimensiona a janela. - SC_TASKLIST
- 0xF130
Ativa o menu Iniciar . - SC_VSCROLL
- 0xF070
Percorre verticalmente. Se o código de comando for SC_SCREENSAVE, então as seguintes bandeiras estão disponíveis nos quatro bits de ordem baixa:
Flag Meaning - SCF_ISSECURE
- 0x0001
O protetor de ecrã está seguro. -
lParam
-
A palavra de ordem baixa especifica a posição horizontal do cursor, em coordenadas de ecrã, se um comando de menu de janela for escolhido com o rato. Caso contrário, este parâmetro não é utilizado.
A palavra de ordem superior especifica a posição vertical do cursor, em coordenadas do ecrã, se um comando de menu de janela for escolhido com o rato. Este parâmetro é 1 se o comando for escolhido usando um acelerador do sistema, ou zero se usar um mnemónico.
Valor de retorno
Uma aplicação deverá devolver zero se processar esta mensagem.
Observações
Para obter as coordenadas de posição em coordenadas de ecrã, use o seguinte código:
xPos = GET_X_LPARAM(lParam); // horizontal position
yPos = GET_Y_LPARAM(lParam); // vertical position
A função DefWindowProc executa o pedido de menu de janela para as ações pré-definidas 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 a partir do valor wParam , uma aplicação deve combinar o valor 0xFFF0 com o valor wParam usando o operador bit a bit AND, como mostrado no exemplo acima.
Os itens do menu numa janela podem ser modificados usando as funções GetSystemMenu, AppendMenu, InsertMenu, ModifyMenu, InsertMenuItem e SetMenuItemInfo . As aplicações que modificam o menu da janela devem processar WM_SYSCOMMAND mensagens.
Uma aplicação pode executar qualquer comando do sistema a qualquer momento, passando uma mensagem WM_SYSCOMMAND para o DefWindowProc. Quaisquer mensagens WM_SYSCOMMAND não tratadas pela aplicação devem ser encaminhadas para o DefWindowProc. Quaisquer valores de comando adicionados por uma aplicação devem ser processados pela aplicação e não podem ser passados para o DefWindowProc.
Se a proteção por palavra-passe estiver ativada pela política, o protetor de ecrã é iniciado independentemente do que a aplicação faça com a notificação SC_SCREENSAVE , mesmo que não a transmita ao DefWindowProc.
As teclas aceleradoras definidas para escolher itens no menu da janela são traduzidas em mensagens WM_SYSCOMMAND ; todas as outras teclas do acelerador são traduzidas em mensagens WM_COMMAND .
Se o wParam estiver SC_KEYMENU, o lParam contém o código de carácter da tecla usada com a tecla ALT para mostrar o menu popup. Por exemplo, pressionar ALT+F para mostrar o popup do ficheiro gera um WM_SYSCOMMAND com wParam igual a SC_KEYMENU e lParam igual a 'f'.
Requerimentos
| Requisito | Valor |
|---|---|
| Cliente mínimo suportado |
Windows 2000 Professional [apenas aplicações de ambiente de trabalho] |
| Servidor mínimo suportado |
Windows 2000 Server [apenas aplicações de ambiente de trabalho] |
| Header |
|
Consulte também
-
Referência
-
Conceptual