Windows Sockets: Derivação de Classes de soquete
Este artigo descreve algumas das funcionalidades que você pode obter derivando sua própria classe de uma das classes de soquete.
Você pode derivar suas próprias classes de soquete de um CAsyncSocket ou CSocket para adicionar sua própria funcionalidade.Em particular, essas classes fornecem um número de funções de membro virtual pode substituir.Essas funções incluem OnReceive, OnSend, OnAccept, OnConnect, e OnClose.Você pode substituir as funções em sua classe derivada de soquete para aproveitar as notificações que eles fornecem quando ocorrem eventos de rede.A estrutura chama essas funções de retorno de chamada de notificação para notificar eventos soquete importantes, como, por exemplo, o recebimento de dados que você pode começar a leitura.Para obter mais informações sobre as funções de notificação, consulte Windows Sockets: soquete notificações.
Além disso, a classe CSocket fornece a OnMessagePending função de membro (um avançado substituível).MFC chama essa função, enquanto o soquete é bombeamento de mensagens baseado no Windows.Você pode substituir OnMessagePending para procurar mensagens específicas do Windows e respondê-los.
A versão padrão do OnMessagePending fornecido na classe CSocket examina a fila de mensagens para WM_PAINT mensagens enquanto aguarda uma chamada de bloqueio concluir.Ele envia mensagens de pintura para melhorar a qualidade do vídeo.Além de fazer algo de útil, isso mesmo ilustra uma maneira você pode substituir a função.Como outro exemplo, considere o uso de OnMessagePending para a tarefa seguinte.Suponha que você exibir uma caixa de diálogo sem janela restrita enquanto aguarda concluir uma transação de rede.A caixa de diálogo contém um botão de cancelar o usuário pode usar para cancelar as transações de bloqueio muito demoram.O OnMessagePending substituição talvez bomba mensagens relacionadas a esta caixa de diálogo sem janela restrita.
No seu OnMessagePending substituir, volte TRUE ou o retorno de uma chamada para a versão de classe base do OnMessagePending.Chame a versão de classe base se ele executa o trabalho que deseja continuar.
Para obter mais informações, consulte: