Partilhar via


Classe CDialogImpl

Essa classe fornece métodos para criar uma caixa de diálogo modal ou sem janela restrita.

Importante

Essa classe e os respectivos membros não podem ser usados em aplicativos executados no Windows Runtime.

Sintaxe

template <class T,
    class TBase = CWindow>
    class ATL_NO_VTABLE CDialogImpl : public CDialogImplBaseT<TBase>

Parâmetros

T
Sua classe, derivada de CDialogImpl.

TBase
A classe base da sua nova classe. A classe base padrão é CWindow.

Membros

Métodos

Função Descrição
Criar Cria uma caixa de diálogo sem janela restrita.
DestroyWindow Destrói uma caixa de diálogo sem janela restrita.
DoModal Cria uma caixa de diálogo modal.
EndDialog Destrói uma caixa de diálogo modal.

Métodos CDialogImplBaseT

Função Descrição
GetDialogProc Retorna o procedimento da caixa de diálogo atual.
MapDialogRect Mapeia as unidades de caixa de diálogo do retângulo especificado para unidades de tela (pixels).
OnFinalMessage Chamado após receber a última mensagem, normalmente WM_NCDESTROY.

Funções estáticas

Função Descrição
DialogProc Processa mensagens enviadas para a caixa de diálogo.
StartDialogProc Chamado quando a primeira mensagem é recebida para processar mensagens enviadas para a caixa de diálogo.

Comentários

Com CDialogImpl você pode criar uma caixa de diálogo modal ou sem janela restrita. CDialogImpl fornece o procedimento da caixa de diálogo, que usa o mapa de mensagens padrão para direcionar mensagens para os manipuladores apropriados.

O destruidor ~CWindowImplRoot da classe base garante que a janela tenha sumido antes de destruir o objeto.

CDialogImpl deriva de CDialogImplBaseT, que, por sua vez, deriva da interface CWindowImplRoot.

Observação

Sua classe deve definir um membro IDD que especifique a ID do recurso de modelo da caixa de diálogo. Por exemplo, o Assistente de Projeto da ATL adiciona automaticamente a seguinte linha à sua classe:

enum { IDD = IDD_MYDLG };

em que MyDlg é o nome curto inserido na página Nomes do assistente.

Para obter mais informações sobre Consulte
Criar controles Tutorial da ATL
Usar caixas de diálogo na ATL Classes de janela da ATL
Assistente de Projeto da ATL Criando um projeto ATL
Caixas de diálogo Caixas de diálogo e tópicos subsequentes no SDK do Windows

Requisitos

Cabeçalho: atlwin.h

CDialogImpl::Create

Cria uma caixa de diálogo sem janela restrita.

HWND Create(
    HWND hWndParent,
    LPARAM dwInitParam = NULL );

HWND Create(
    HWND hWndParent,
    RECT&,
    LPARAM dwInitParam = NULL);

Parâmetros

hWndParent
[in] O identificador para a janela do proprietário.

RECT& rect [in] Uma estrutura RECT que especifica o tamanho e a posição da caixa de diálogo.

dwInitParam
[in] Especifica o valor a ser passado para a caixa de diálogo no parâmetro lParam da mensagem WM_INITDIALOG.

Valor de retorno

O identificador para a caixa de diálogo recém-criada.

Comentários

Essa caixa de diálogo é anexada automaticamente ao objeto CDialogImpl. Para criar uma caixa de diálogo modal, chame DoModal. A segunda substituição acima é usada apenas com CComControl.

CDialogImpl::DestroyWindow

Destrói uma caixa de diálogo sem janela restrita.

BOOL DestroyWindow();

Valor de retorno

TRUE se a caixa de diálogo for destruída com êxito. Caso contrário, FALSE.

Comentários

Retornará TRUE se a caixa de diálogo for destruída com êxito. Caso contrário, FALSE.

CDialogImpl::DialogProc

Essa função estática implementa o procedimento da caixa de diálogo.

static LRESULT CALLBACK DialogProc(
    HWND hWnd,
    UINT uMsg,
    WPARAM wParam,
    LPARAM lParam);

Parâmetros

hWnd
[in] O identificador para a caixa de diálogo.

uMsg
[in] A mensagem enviada para a caixa de diálogo.

wParam
[in] Informações adicionais específicas de mensagem.

lParam
[in] Informações adicionais específicas de mensagem.

Valor de retorno

TRUE se a mensagem for processada. Caso contrário, FALSE.

Comentários

DialogProc usa o mapa de mensagem padrão para direcionar mensagens para os manipuladores apropriados.

Você pode substituir DialogProc para fornecer um mecanismo diferente para lidar com mensagens.

CDialogImpl::DoModal

Cria uma caixa de diálogo modal.

INT_PTR DoModal(
    HWND hWndParent = ::GetActiveWindow(),
    LPARAM dwInitParam = NULL);

Parâmetros

hWndParent
[in] O identificador para a janela do proprietário. O valor padrão é o valor retornado da função GetActiveWindow Win32.

dwInitParam
[in] Especifica o valor a ser passado para a caixa de diálogo no parâmetro lParam da mensagem WM_INITDIALOG.

Valor de retorno

Se tiver êxito, o valor do parâmetro nRetCode especificado na chamada para EndDialog. Caso contrário, -1.

Comentários

Essa caixa de diálogo é anexada automaticamente ao objeto CDialogImpl.

Para criar uma caixa de diálogo sem janela restrita, chame Criar.

CDialogImpl::EndDialog

Destrói uma caixa de diálogo modal.

BOOL EndDialog(int nRetCode);

Parâmetros

nRetCode
[in] O valor a ser retornado por CDialogImpl::DoModal.

Valor de retorno

TRUE se a caixa de diálogo for destruída. Caso contrário, FALSE.

Comentários

EndDialog deve ser chamado por meio do procedimento de caixa de diálogo. Depois que a caixa de diálogo é destruída, o Windows usa o valor de nRetCode como o valor retornado para DoModal, que criou a caixa de diálogo.

Observação

Não chame EndDialog para destruir uma caixa de diálogo sem janela restrita. Em vez disso, chame CWindow::DestroyWindow.

CDialogImpl::GetDialogProc

Retorna DialogProc, o procedimento da caixa de diálogo atual.

virtual WNDPROC GetDialogProc();

Valor de retorno

O procedimento da caixa de diálogo atual.

Comentários

Substitua esse método para substituir o procedimento de caixa de diálogo pelo seu próprio.

CDialogImpl::MapDialogRect

Converte (mapeia) as unidades de caixa de diálogo do retângulo especificado para unidades de tela (pixels).

BOOL MapDialogRect(LPRECT lpRect);

Parâmetros

lpRect
Aponta para um objeto CRect ou estrutura RECT que deve receber as coordenadas de cliente da atualização que inclui a região de atualização.

Valor de retorno

Não zero se a atualização for bem-sucedida; 0 se a atualização falhar. Para obter outras informações sobre o erro, chame GetLastError.

Comentários

A função substitui as coordenadas na estrutura RECT especificada pelas coordenadas convertidas, o que permite que a estrutura seja usada para criar uma caixa de diálogo ou posicionar um controle dentro de uma caixa de diálogo.

CDialogImpl::OnFinalMessage

Chamado após receber a última mensagem, (normalmente, WM_NCDESTROY).

virtual void OnFinalMessage(HWND hWnd);

Parâmetros

hWnd
[in] Um identificador para a janela que está sendo destruída.

Comentários

Observe que, se você quiser excluir automaticamente o objeto após a destruição da janela, poderá chamar a exclusão dele aqui.

CDialogImpl::StartDialogProc

Chamado apenas uma vez, quando a primeira mensagem é recebida para processar mensagens enviadas para a caixa de diálogo.

static LRESULT CALLBACK StartDialogProc(
    HWND hWnd,
    UINT uMsg,
    WPARAM wParam,
    LPARAM lParam);

Parâmetros

hWnd
[in] O identificador para a caixa de diálogo.

uMsg
[in] A mensagem enviada para a caixa de diálogo.

wParam
[in] Informações adicionais específicas de mensagem.

lParam
[in] Informações adicionais específicas de mensagem.

Valor de retorno

O procedimento da janela.

Comentários

Após a chamada inicial para StartDialogProc, DialogProc é definido como um procedimento de caixa de diálogo e outras chamadas vão para lá.

Confira também

BEGIN_MSG_MAP
Visão geral da aula