Caixas de combinação "subclasse"

A criação de subclasses é um procedimento que permite que um aplicativo para interceptar e processo de mensagens enviadas ou lançada para uma janela. Usando subclassificação, um aplicativo pode substituir seu próprio processamento para certas mensagens, deixando a maioria das mensagem de processamento para o procedimento janela classe definida.

Quando o sistema operacional cria uma janela, ele salva as informações sobre ele em uma estrutura de dados interna que inclui o endereço do procedimento de janela. Para "subclasse" uma janela, um aplicativo chama a função SetClassLong para substituir o endereço deste procedimento com o endereço de instância de um procedimento subclasse definido pelo aplicativo. Depois disso, todas as mensagens para a janela são enviadas para o procedimento subclasse. Este procedimento usa o CallWindowProc função para transmitir mensagens não processadas para o procedimento de janela original. Para obter uma descrição do processamento da mensagem realizada pelo procedimento de janela de classe COMBOBOX, consulte Comportamento da caixa de combinação padrão.

Quando a caixa de combinação está fora de uma caixa de diálogo, um aplicativo não pode processar a guia Inserir e teclas de escape, a menos que ele usa um procedimento de subclasse. Quando uma caixa de combinação simples ou suspensa recebe o foco de entrada, ele imediatamente define o foco para seu controle de edição de criança. Portanto, um aplicativo deve subclasse o Controlarar de Editar para interceptar a entrada do teclado para uma caixa de combinação simples ou soltar-para baixo. Para um exemplo, consulte subclassificação uma caixa de combinação.

Se um procedimento subclasse processa o WM_PAINT mensagem, ele deve usar o BeginPaint função para se preparar para a pintura. Antes de chamar o EndPaint função, ele passa o identificador de contexto para dispositivo (DC) como o wParam parâmetro para o procedimento janela. Se EndPaint é chamado pela primeira vez, o procedimento de janela de classe não faz nenhuma pintura porque EndPaint valida a janela inteira.

Uma técnica relacionada com a criação de subclasses é superclassing. Uma superclasse se assemelha a qualquer outra classe, exceto que seu procedimento de janela não chama DefWindowProc para lidar com mensagens não processadas. Em vez disso, ele passa mensagens não processadas para o procedimento janela para a classe de janela pai. Siga as orientações em Procedimentos de janela para evitar problemas que podem ocorrer com a criação de subclasses e superclassing.

Index