Subclassificação de instância

Subclasses um aplicativo uma instância de uma janela usando a função SetWindowLong . O aplicativo passa a bandeira GWL_WNDPROC, o identificador para a janela subclasse e o endereço do procedimento subclasse a SetWindowLong. O procedimento subclasse pode residir em uma biblioteca de vínculo dinâmico (DLL) ou executável do aplicativo.

SetWindowLong retorna o endereço do procedimento de janela original da janela. O aplicativo deve salvar o endereço, usá-lo em chamadas subseqüentes para o CallWindowProc função, para passar mensagens interceptadas para o procedimento de janela original. O aplicativo também deve ter o endereço de procedimento de janela original para remover a subclasse janela. Para remover a subclasse, o aplicativo chama SetWindowLong novamente, passando o endereço do procedimento de janela original com o sinalizador GWL_WNDPROC e o identificador para a janela.

O sistema possui o sistema de classes globais, e aspectos dos controles podem alterar de uma versão do sistema para a próxima. Se o aplicativo deve subclasse uma janela que pertence a uma classe global do sistema, o desenvolvedor pode precisar atualizar o aplicativo quando uma nova versão do sistema.

Porque a criação de subclasses de instância ocorre depois que uma janela é criada, você não pode adicionar quaisquer bytes extras para a janela. Aplicativos que a subclasse uma janela deve usar lista de propriedades da janela para armazenar quaisquer dados necessários para uma instância de janela subclassed. Para obter mais informações, consulte Janela Propriedades.

Quando um subclasses de aplicação uma janela subclassed, ele deve remover as subclasses na ordem inversa em que foram realizadas. Se a ordem de retirada não é revertida, pode ocorrer um erro irrecuperável no sistema.

Index