Processamento de mensagens de exibição de lista padrão
Esta seção lista o processamento de mensagens de janela executado por um controle de exibição de lista.
Processamento de mensagem
A tabela a seguir descreve o processamento de mensagens de janela executado por um controle de exibição de lista.
Mensagem | Processamento realizado |
---|---|
WM_CHAR | Procura um item de exibição de lista que começa com o caractere especificado e, se o item for encontrado, seleciona e define o foco para o item. Vários caracteres recebidos dentro de um intervalo de tempo limite, atualmente fixado em um segundo, são concatenados e o controle de exibição de lista procura um item que começa com a cadeia de caracteres resultante. |
WM_COMMAND | Processa os códigos de notificação EN_UPDATE e EN_KILLFOCUS e encaminha todas as outras notificações de controle de edição para a janela pai. |
WM_CREATE | Executa inicialização adicional ao WM_NCCREATE. Se o estilo de janela LVS_SHAREIMAGELISTS não for especificado, o controle list-view criará o ícone e as listas de imagens de ícones pequenos neste ponto. |
WM_DESTROY | Libera recursos alocados durante WM_CREATE. |
WM_ERASEBKGND | Apaga o plano de fundo da janela usando a cor de plano de fundo atual para o controle de exibição de lista. Se a cor do plano de fundo for o valor CLR_NONE, o controle list-view encaminhará a mensagem para a janela pai. |
WM_GETDLGCODE | Retorna uma combinação dos valores DLGC_WANTTAB e DLGC_WANTARROWS. |
WM_GETFONT | Retorna o identificador para a fonte de rótulo atual. |
WM_HSCROLL | Rola o controle de exibição de lista horizontalmente. |
WM_KEYDOWN | Processa a barra de espaços, ENTER e as teclas de seta e envia um código de notificação LVN_KEYDOWN para a janela pai. |
WM_KILLFOCUS | Repinta o item de lista focado, se houver, e envia um código de notificação NM_KILLFOCUS para a janela pai. |
WM_LBUTTONDBLCLK | Envia à janela pai um código de notificação NM_DBLCLK (modo de exibição de lista). |
WM_LBUTTONDOWN | Processado de maneiras diferentes, dependendo se uma operação de clique ou arrastar está sendo iniciada. Para determinar qual operação está envolvida, o controle list-view entra em um loop de mensagem modal até que o botão seja liberado ou o mouse seja movido. No caso de um clique, o controle de exibição de lista pode alterar qual item tem o foco e quais itens são selecionados, levando em conta a posição do cursor, o estado das teclas SHIFT e CTRL e assim por diante. Em seguida, o controle de exibição de lista envia à janela pai um código de notificação NM_CLICK (modo de exibição de lista). Se o arrastar começar sobre um item, o controle de exibição de lista selecionará e definirá o foco para o item. Em seguida, ele envia um código de notificação LVN_BEGINDRAG para a janela pai. A janela pai é responsável por realmente executar a operação de arrastar. Se o arrastar começar sobre o plano de fundo da janela, o controle de exibição de lista entrará em outro loop de mensagem modal, permitindo que o usuário forme um retângulo arrastando o mouse. Os itens dentro do retângulo são selecionados. |
WM_NCCREATE | Aloca e inicializa uma estrutura de dados interna e, em seguida, chama a função DefWindowProc. |
WM_NCDESTROY | Libera recursos alocados pelo controle list-view. A menos que o estilo LVS_SHAREIMAGELISTS seja usado, isso inclui excluir as listas de imagens de tamanho completo e pequenas. |
WM_NOTIFY | Processa códigos de notificação de controle de cabeçalho. |
WM_PAINT | Exibe todos os itens na região de atualização. Para itens de retorno de chamada, o controle primeiro envia um código de notificação LVN_GETDISPINFO para a janela do proprietário para solicitar informações de exibição. Se o parâmetro wParam for não-NULL, o controle assume que o valor é um HDC e pinta usando esse contexto de dispositivo. |
WM_RBUTTONDOWN | Processado da mesma maneira que a mensagem WM_LBUTTONDOWN, exceto que o controle envia um código de notificação NM_RCLICK (modo de exibição de lista) (em vez de NM_CLICK (modo de exibição de lista)) e um código de notificação de LVN_BEGINRDRAG (em vez de LVN_BEGINDRAG). Observe que o controle processa a mensagem de WM_RBUTTONUP correspondente e não a despacha. Os aplicativos, portanto, não podem ver essa mensagem, mesmo subclassificando o controle. |
WM_SETFOCUS | Repinta o item de lista focado, se houver, e envia um código de notificação NM_SETFOCUS para a janela pai. |
WM_SETFONT | Salva a alça de fonte especificada, encaminha a mensagem para a janela de cabeçalho, se houver, e repinta usando a nova fonte. |
WM_SETREDRAW | Ativa ou desativa o redesenho. |
WM_TIMER | Inicia a edição de um rótulo de item. Se o usuário clicar no rótulo do item focado, o controle de exibição de lista definirá um temporizador em vez de entrar no modo de edição imediatamente. O temporizador possibilita que o controle de exibição de lista não entre no modo de edição se o usuário clicar duas vezes no rótulo. |
WM_VSCROLL | Rola o controle de exibição de lista verticalmente. |
WM_WINDOWPOSCHANGED | Atualiza as barras de rolagem da janela. Se o modo de exibição atual for o modo de exibição de ícone ou ícone pequeno e o estilo LVS_AUTOARRANGE for especificado, o controle de exibição de lista também organizará os itens de lista. |
WM_WININICHANGE | Processa alterações nas métricas do sistema. |