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á.