Implementação de uma caixa de diálogo
Há duas maneiras de adicionar uma caixa de diálogo ao seu projeto ATL: usar o Assistente de caixa de diálogo do ATL ou adicioná-lo manualmente.
Adicionando uma caixa de diálogo com o Assistente de caixa de diálogo do ATL
No Adicionar caixa de diálogo de classe, selecionar o objeto ATL Dialog para adicionar uma caixa de diálogo caixa para seu projeto ATL.Preencha o Assistente de caixa de diálogo do ATL conforme apropriado e clicar Concluir.O assistente adiciona uma classe derivada de CAxDialogImpl para seu projeto.em em aberto o modo de exibição de recurso a partir de Modo de exibição menu, localizar a caixa de diálogo e clicar duas vezes nele para abri-lo no editor de recursos.
Observação: |
---|
Se sua caixa de diálogo é derivada de CAxDialogImpl, ele pode hospedar controles ActiveX e o Windows. Se você não desejar a sobrecarga do ActiveX controle suporte na sua classe de caixa de diálogo, use CSimpleDialog or CDialogImpl em vez disso. |
mensagem e manipuladores de eventos podem ser adicionados à sua classe de caixa de diálogo de modo de exibição de classe.Para obter mais informações, consulte Adicionando um ATL manipulador de mensagens.
Adicionando uma caixa de diálogo manualmente
Implementação de uma caixa de diálogo é semelhante à implementação de uma janela.Você deriva uma classe de um dos CAxDialogImpl, CDialogImpl, or CSimpleDialog e declarar um MAP da mensagem para lidar com mensagens.No entanto, também deverá especificar uma ID de recurso caixa de diálogo modelo em sua classe derivada.A classe deve ter um membro de dados chamado IDD para manter esse valor.
Observação: |
---|
Quando você cria uma caixa de diálogo usando o Assistente de caixa de diálogo do ATL, o assistente adicionará automaticamente o IDD membro sistema autônomo um enum Digite. |
CDialogImpl permite que você implemente uma janela restrita ou uma caixa de diálogo sem janela restrita que hospeda os controles do Windows. CAxDialogImpl permite que você implemente uma janela restrita ou uma caixa de diálogo sem janela restrita que hospeda os controles ActiveX e o Windows.
Para criar uma caixa de diálogo modal, criar uma instância do seu CDialogImpl-derivado (ou CAxDialogImpl-derivado) classe e, em seguida, telefonar o DoModal método.Para fechar uma caixa de diálogo modal telefonar o EndDialog método a partir de um manipulador de mensagens.Para criar uma caixa de diálogo sem janela restrita, telefonar o Criar método em vez de DoModal. Para destruir uma caixa de diálogo sem janela restrita, telefonar DestroyWindow.
Abaixar eventos é concluído automaticamente em CAxDialogImpl.Implementar a caixa de diálogo mensagem manipuladores de sistema autônomo você faria sistema autônomo manipuladores em um CWindowImpl-classe derivada. Se houver um valor retornado específicas de mensagem, sistema autônomo retornará sistema autônomo um LRESULT. O retornadoLRESULT os valores são mapeados por ATL para manipulação adequada pelo Gerenciador de caixa de diálogo do Windows. Para obter detalhes, consulte o código-fonte de CDialogImplBaseT::DialogProc 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*/);
};