Recipientes de controle ActiveX: Usando controles em um contêiner não Dialog

Em alguns aplicativos, sistema autônomo um SDI ou aplicativo MDI, você desejará incorporar um controle em uma janela do aplicativo.The Criar função de membro da classe wrapper, inserida pelo Visual C++, pode criar uma instância do controle dinamicamente, sem a necessidade de uma caixa de diálogo.

The Criarfunção de membro tem os seguintes parâmetros:

  • lpszWindowName
    Um ponteiro para o texto a ser exibido na propriedade Text ou legenda do controle (se houver).

  • dwStyle
    Estilos do Windows.Para obter uma lista completa, consulte CWnd::CreateControl.

  • rect
    Especifica o dimensionar e posição do controle.

  • pParentWnd
    Especifica a janela do controle pai, normalmente um CDialog. Não deve ser NULO.

  • nID
    Especifica o identificador de controle e pode ser usado pelo contêiner para referir-se o controle.

Um exemplo de uso da função para criar dinamicamente um controle ActiveX seria em um modo Formulário de um aplicativo SDI.Em seguida, você poderia criar uma instância do controle no WM_CREATE manipulador do aplicativo.

Neste exemplo, CMyView é a classe de modo principal CCirc é a classe de wrapper e CIRC.H é o arquivo de cabeçalho (.H) da classe wrapper.

Implementar esse recurso é um processo de quatro etapas.

Para criar dinamicamente um controle ActiveX em uma janela de diálogo não

  1. Inserir CIRC.H em CMYVIEW.H, antes do CMyView definição de classe:

    #include "circ.h"
    
  2. Adicione uma variável de membro (do tipo CCirc) para a seção protegida dos CMyView definição de classe localizada no CMYVIEW.H:

    class CMyView : public CView
    {
    
    
    ...
    
    
    protected:
       CCirc m_myCtl;
    public:
       afx_msg void OnViewCircdlg();
    };
    
  3. Adicionar um WM_CREATE manipulador de mensagens para classe CMyView.

  4. Na função de manipulador, CMyView::OnCreate, fazer uma telefonar para o controle Create função usando o Isso ponteiro sistema autônomo a janela pai:

    int CMyView::OnCreate(LPCREATESTRUCT lpCreateStruct)
    {
       if (CView::OnCreate(lpCreateStruct) == -1)
          return -1;
    
       m_myCtl.Create(NULL, WS_VISIBLE, CRect(50,50,100,100), this, 0);
       m_myCtl.SetCaption(_T("Control created"));
    
       return 0;
    }
    
  5. Crie o projeto.Um controle Circ será criado dinamicamente sempre que o modo de exibição do aplicativo é criado.

Consulte também

Conceitos

Recipientes de controle ActiveX