Partilhar via


Classe CDialogImpl

Observação

A Active Template Library (ATL) continua a ser suportada. No entanto, já não estamos a adicionar funcionalidades nem a atualizar a documentação.

Esta classe fornece métodos para criar uma caixa de diálogo modal ou sem modos.

Importante

Esta classe e os seus membros não podem ser usados em aplicações que sejam executadas no Windows Runtime.

Sintaxe

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

Parâmetros

T
A sua classe, derivada de CDialogImpl.

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

Membros

Methods

Função Description
Create Cria uma caixa de diálogo sem modos.
DestroyWindow Destrói uma caixa de diálogo sem modo.
DoModal Cria uma caixa de diálogo modal.
EndDialog Destrói uma caixa de diálogo modal.

Métodos CDialogImplBaseT

Função Description
GetDialogProc Devolve o procedimento atual da caixa de diálogo.
MapDialogRect Mapeia as unidades de caixa de diálogo do retângulo especificado para unidades de ecrã (píxeis).
OnFinalMessage Liga depois de receber a última mensagem, normalmente WM_NCDESTROY.

Funções estáticas

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

Observações

Podes CDialogImpl criar uma caixa de diálogo modal ou sem modos. CDialogImpl fornece o procedimento da caixa de diálogo, que utiliza o mapa de mensagens por defeito para direcionar mensagens para os handlers apropriados.

O destruidor ~CWindowImplRoot da classe base assegura que a janela desaparece antes de destruir o objeto.

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

Observação

A sua classe deve definir um IDD membro que especifique o ID do recurso do modelo de diálogo. Por exemplo, o ATL Project Wizard adiciona automaticamente a seguinte linha à sua turma:

enum { IDD = IDD_MYDLG };

onde MyDlg é o Nome Curto introduzido na página de Nomes do mago.

Para mais informações sobre Veja
Criação de controlos ATL Tutorial
Utilização de caixas de diálogo no ATL Classes de Janelas ATL
Feiticeiro do Projeto ATL Criando um projeto ATL
Caixas de diálogo Caixas de diálogo e tópicos subsequentes no SDK do Windows

Requerimentos

Cabeçalho: atlwin.h

CDialogImpl::Create

Cria uma caixa de diálogo sem modos.

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

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

Parâmetros

hWndParent
[dentro] A maçaneta da janela do dono.

RECT&rect [ em] Uma estrutura RECT que especifica o tamanho e a posição do diálogo.

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

Valor de retorno

O handle da nova caixa de diálogo criada.

Observações

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

CDialogImpl::D estroyWindow

Destrói uma caixa de diálogo sem modo.

BOOL DestroyWindow();

Valor de retorno

TRUE se a caixa de diálogo for destruída com sucesso; caso contrário, FALSO.

Observações

Retorna TRUE se a caixa de diálogo foi destruída com sucesso; caso contrário, FALSO.

CDialogImpl::D ialogProc

Esta 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
[dentro] O handle da caixa de diálogo.

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

wParam
[dentro] Informação adicional específica da mensagem.

lParam
[dentro] Informação adicional específica da mensagem.

Valor de retorno

TRUE se a mensagem for processada; caso contrário, FALSO.

Observações

DialogProc utiliza o mapa de mensagens padrão para direcionar mensagens aos manipuladores apropriados.

Pode sobrescrever DialogProc para fornecer um mecanismo diferente para lidar com as mensagens.

CDialogImpl::D oModal

Cria uma caixa de diálogo modal.

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

Parâmetros

hWndParent
[dentro] A maçaneta da janela do dono. O valor padrão é o valor de retorno da função Win32 GetActiveWindow .

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

Valor de retorno

Se for bem-sucedido, o valor do parâmetro nRetCode especificado na chamada ao EndDialog. Caso contrário, -1.

Observações

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

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

CDialogImpl::EndDialog

Destrói uma caixa de diálogo modal.

BOOL EndDialog(int nRetCode);

Parâmetros

nRetCode
[dentro] O valor a ser devolvido por CDialogImpl::D oModal.

Valor de retorno

TRUE se a caixa de diálogo for destruída; caso contrário, FALSO.

Observações

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

Observação

Não chame EndDialog para destruir uma caixa de diálogo sem modos. Ligue antes para CWindow::D estroyWindow .

CDialogImpl::GetDialogProc

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

virtual WNDPROC GetDialogProc();

Valor de retorno

O procedimento atual da caixa de diálogo.

Observações

Substitua este método para substituir o processo de diálogo pelo seu próprio.

CDialogImpl::MapDialogRect

Converte (mapeia) as unidades de caixa de diálogo do retângulo especificado em unidades de ecrã (píxeis).

BOOL MapDialogRect(LPRECT lpRect);

Parâmetros

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

Valor de retorno

Diferente de zero se a atualização for bem-sucedida; 0 se a atualização falhar. Para obter informações de erro estendidas, ligue para GetLastError.

Observações

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

CDialogImpl::OnFinalMessage

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

virtual void OnFinalMessage(HWND hWnd);

Parâmetros

hWnd
[dentro] Uma maçaneta da janela a ser destruída.

Observações

Note que, se quiser eliminar automaticamente o seu objeto após a destruição da janela, pode chamar delete this; aqui.

CDialogImpl::StartDialogProc

Chamada 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
[dentro] O handle da caixa de diálogo.

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

wParam
[dentro] Informação adicional específica da mensagem.

lParam
[dentro] Informação adicional específica da mensagem.

Valor de retorno

O procedimento da janela.

Observações

Após a chamada inicial para StartDialogProc, DialogProc é definido como um procedimento de diálogo, e as chamadas seguintes seguem para lá.

Consulte também

BEGIN_MSG_MAP
Visão geral da classe