SUBEDIT exemplo: Superclasses um controle padrão do Windows

O exemplo SUBEDIT demonstra como criar um controle ATL que controlam superclasses edição padrão do Windows.

The Exemplo de atributos SUBEDIT é a versão atribuída neste exemplo.

Observação de segurança:

Este código de exemplo é fornecido para ilustrar um conceito e não deve ser usado em aplicativos ou sites da Web, pois ele não pode ilustrar sistema autônomo práticas de codificação mais seguras.Microsoft sistema autônomo sumes nenhuma responsabilidade por danos incidentais ou conseqüenciais deve o código de exemplo ser usado para fins diferentes de sistema autônomo se destina.

Para obter exemplos e instruções para instalá-los:

  • Sobre o Visual Studio Ajuda menu, clicar Exemplos.

    Para obter mais informações, consulte Localizando arquivos de exemplo.

  • A versão mais recente e a lista completa das Exemplos está disponível online a partir de O Visual Studio 2008 Exemplos página.

  • Você também pode localizar exemplos no disco rígido do seu computador.Por padrão, exemplos e um arquivo Leiame são copiados para uma pasta sob \programa Files\Visual Studio 9.0\Samples\.Para edições Express do Visual Studio, todos os exemplos estão localizados online.

Criando e executando o exemplo

Para compilação e executar esse exemplo

  1. em aberto SubEdit.sln do arquivo de solução.

  2. From a Compilação menu, clicar Compilação.

  3. Depois que cria o exemplo, abra AtlEdit.htm no navegador da Web e tente fora do controle.

Você pode testar o controle no contêiner de teste de controle ActiveX, abra a classe ATLEdit.Para obter detalhes sobre como acessar o contêiner de teste e usá-lo para testar um controle, consulte Teste de propriedades e eventos com o contêiner de teste.

Superclassing um controle do Windows

ATL fornece a capacidade de criar um controle que controlam superclasses padrão do Windows.Superclassing permite que você crie uma classe de janela que se baseia em uma classe existente, mas usa um procedimento de janela diferente.Você criar uma janela com base em sua classe nova janela.Mensagens de superclasse um controle são processados por um MAP da mensagem ATL primeiro antes de serem enviados ao procedimento de janela original do controle.Isso permite que você modificar o comportamento padrão dos controles padrão do Windows.

Ao usar ATL Control assistente para criar um controle ActiveX, você pode optar por adicionar um controle baseado em uma classe de janela padrão.Nesse caso, o assistente adiciona uma variável de membro do tipo CContainedWindow a classe do controle ActiveX. CContainedWindow::Create em seguida, cria uma janela que superclasses da janela classe é especificado. Esta janela usa CContainedWindow::WindowProc para rotear as mensagens por meio de um MAP da mensagem. Se uma mensagem precisa processamento adicional, ele é enviado para o procedimento de janela original da classe de janela.

Examinando o código de exemplo SUBEDIT (AtlEdit.h)

O construtor para o CAtlEdit conjuntos de classe a m_bWindowOnly variável de membro para TRUE.Isso garante que o controle nunca será ativado sistema autônomo um controle sem janelas.

The CContainedWindow variável de membro m_EditCtrl, inicializadas pela CAtlEdit construtor. The CContainedWindow construtor utiliza três parâmetros: o nome da classe de janela a ser superclassificados (neste caso, "edição"); um ponteiro para oCAtlEdit classe, que contém o MAP da mensagem; e o identificador do MAP da mensagem que processará m_EditCtrl's mensagens. Por padrão, m_EditCtrl usa um MAP da mensagem alternativo, declarado com o ALT_MSG_MAP macro.

O MAP da mensagem padrão declara os nomes das funções do manipulador para WM_CREATE e WM_CTLCOLOREDIT mensagens enviadas para o CAtlEdit controle. The OnCreate chamadas do manipulador CContainedWindow::Create Para criar m_EditCtrlda janela. The OnCtlColorEdit manipulador Especifica uma cor de plano de fundo e texto nova para m_EditCtrl.

O MAP da mensagem alternativo declara uma função de manipulador WM_CHAR as mensagens enviadas para m_EditCtrl. Esse manipulador aceita somente caracteres, não símbolos ou números e então passa a WM_CHAR mensagem para o procedimento de janela original definida pela classe Windows edição.

Palavras-chave

Este exemplo utiliza as seguintes palavras-chave:

CComCoClass CComControl CComModule::GetClassObject; CComModule::GetLockCount; CComModule::Init; CComModule::RegisterServer; CComModule::Term; CComModule::UnregisterServer; CComObjectRoot; CContainedWindow::DefWindowProc; DisableThreadLibraryCalls; GetStockObject; GetWindowRect; IDataObjectImpl; IDispatchImpl; IOleControlImpl; IOleInPlaceActiveObjectImpl; IOleInPlaceObjectWindowlessImpl; IOleInPlaceObjectWindowlessImpl::SetObjectRects; IOleObjectImpl; IPersistStorageImpl; IPersistStreamInitImpl; IProvideClassInfo2Impl; IQuickActivateImpl; ISpecifyPropertyPagesImpl; IViewObjectExImpl; SetBkColor; SetTextColor; SetWindowPos

Consulte também

Outros recursos

Exemplos do ATL