Partilhar via


Implementando uma caixa de diálogo

Há duas maneiras de adicionar uma caixa de diálogo para seu projeto de ATL: use o assistente da caixa de diálogo de ATL ou adicioná-la manualmente.

Adicionando uma caixa de diálogo com o assistente da caixa de diálogo de ATL

Em Adicione a caixa de diálogo de classe, selecione o objeto da caixa de diálogo de ATL para adicionar uma caixa de diálogo para seu projeto de ATL.Preencha o assistente da caixa de diálogo de ATL como apropriado e clique em Concluir.O assistente adiciona uma classe derivada de CAxDialogImpl ao seu projeto.Abra o modo de recurso do menu de Modo de Visualização , localize a caixa de diálogo, clique duas vezes em para abri-lo no editor de recursos.

ObservaçãoObservação

Se a caixa de diálogo é derivada de CAxDialogImpl, ele pode hospedar controles ActiveX e do windows.Se você não quiser a sobrecarga de suporte do controle ActiveX em sua classe da caixa de diálogo, use CSimpleDialog ou CDialogImpl em vez de isso.

A mensagem e manipuladores de eventos podem ser adicionados à sua classe da caixa de diálogo do modo da classe.Para obter mais informações, consulte adicionando um manipulador de mensagem de ATL.

Adicionando uma caixa de diálogo manualmente

Implementar uma caixa de diálogo é semelhante ao implementar uma janela.Você deriva de uma classe, CAxDialogImplde CDialogImpl, ou de CSimpleDialog e declara mapa de mensagem mensagens de manipular.Em o entanto, você também deve especificar uma identificação de recurso do modelo da caixa de diálogo em sua classe derivada.A classe deve ter um membro de dados chamado IDD para armazenar esse valor.

ObservaçãoObservação

Quando você cria uma caixa de diálogo usando o assistente da caixa de diálogo de ATL, o assistente adiciona automaticamente o membro de IDD como um tipo de enum .

CDialogImpl permite que você implemente uma caixa de diálogo modal ou sem-modo que hospeda controles do windows.CAxDialogImpl permite que você implemente uma caixa de diálogo modal ou sem-modo que hospeda controles ActiveX e do windows.

Para criar uma caixa de diálogo modal, crie uma instância do CDialogImpl- derivado (ou CAxDialogImpl-derivada) da classe então chame o método de DoModal.Para fechar a caixa de diálogo modal, chame o método de EndDialog de um manipulador de mensagem.Para criar uma caixa de diálogo sem-modo, chame o método de Criar em vez de DoModal.Para destruir uma caixa de diálogo sem-modo, chame DestroyWindow.

Afundar eventos é feito automaticamente em CAxDialogImpl.Implementar manipuladores de mensagem da caixa de diálogo como você os manipuladores em CWindowImpl- classe derivada.Se houver um valor de retorno mensagem- específico, retorna como LRESULT.Os valores retornados de LRESULT são mapeados por ATL para manipulação apropriada pelo gerenciador da caixa de diálogo do windows.Para obter detalhes, consulte o código-fonte para CDialogImplBaseT::DialogProc em atlwin.h.

Exemplo

a seguinte classe implementa uma caixa de diálogo:

class CMyDialog : public CDialogImpl<CMyDialog>
{
public:
   enum { IDD = IDD_MYDLG };

   BEGIN_MSG_MAP(CMyDialog)
      MESSAGE_HANDLER(WM_INITDIALOG, OnInitDialog)
      COMMAND_HANDLER(IDCANCEL, BN_CLICKED, OnBnClickedCancel)
   END_MSG_MAP()

   LRESULT OnInitDialog(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, 
      BOOL& /*bHandled*/)
   {
      // Do some initialization code
      return 1;
   }
public:
   LRESULT OnBnClickedCancel(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/);
};

Consulte também

Outros recursos

Classes da janela de ATL