Classe CDialog
A classe base usada para exibir caixas de diálogo na tela.
Sintaxe
class CDialog : public CWnd
Membros
Construtores públicos
Nome | Descrição |
---|---|
CDialog::CDialog | Constrói um objeto CDialog . |
Métodos públicos
Nome | Descrição |
---|---|
CDialog::Create | Inicializa o objeto CDialog . Cria uma caixa de diálogo sem modo e a anexa ao objeto CDialog . |
CDialog::CreateIndirect | Cria uma caixa de diálogo sem modo a partir de um modelo de caixa de diálogo na memória (não baseado em recurso). |
CDialog::DoModal | Chama uma caixa de diálogo modal e retorna quando terminar. |
CDialog::EndDialog | Fecha uma caixa de diálogo modal. |
CDialog::GetDefID | Obtém a ID do controle pushbutton padrão para uma caixa de diálogo. |
CDialog::GotoDlgCtrl | Move o foco para um controle de caixa de diálogo especificado na caixa de diálogo. |
CDialog::InitModalIndirect | Cria uma caixa de diálogo modal a partir de um modelo de caixa de diálogo na memória (não baseado em recurso). Os parâmetros são armazenados até que a função DoModal seja chamada. |
CDialog::MapDialogRect | Converte as unidades da caixa de diálogo de um retângulo em unidades de tela. |
CDialog::NextDlgCtrl | Move o foco para o próximo controle de caixa de diálogo na caixa de diálogo. |
CDialog::OnInitDialog | Substituição para aumentar a inicialização da caixa de diálogo. |
CDialog::OnSetFont | Substituição para especificar a fonte que um controle de caixa de diálogo deve usar quando ele desenha texto. |
CDialog::PrevDlgCtrl | Move o foco para o controle de caixa de diálogo anterior na caixa de diálogo. |
CDialog::SetDefID | Altera o controle de pushbutton padrão de uma caixa de diálogo para um pushbutton especificado. |
CDialog::SetHelpID | Define uma ID de ajuda contextual para a caixa de diálogo. |
Métodos protegidos
Nome | Descrição |
---|---|
CDialog::OnCancel | Substituição para executar a ação do botão Cancelar ou da tecla ESC. O padrão fecha a caixa de diálogo e DoModal retorna IDCANCEL. |
CDialog::OnOK | Substituição para executar a ação do botão OK em uma caixa de diálogo modal. O padrão fecha a caixa de diálogo e DoModal retorna IDOK. |
Comentários
As caixas de diálogo são de dois tipos: modal e sem modo. Uma caixa de diálogo modal precisa ser fechada pelo usuário antes que o aplicativo continue. Uma caixa de diálogo sem modo permite que o usuário exiba a caixa de diálogo e retorne a outra tarefa sem cancelar nem remover a caixa de diálogo.
Um objeto CDialog
é uma combinação de um modelo de caixa de diálogo e uma classe derivada de CDialog
. Use o editor de diálogo para criar o modelo de caixa de diálogo e armazená-lo em um recurso e, em seguida, use o assistente Adicionar Classe para criar uma classe derivada de CDialog
.
Uma caixa de diálogo, como qualquer outra janela, recebe mensagens do Windows. Em uma caixa de diálogo, você está particularmente interessado em lidar com mensagens de notificação dos controles da caixa de diálogo, pois é assim que o usuário interage com sua caixa de diálogo. Use o Assistente de Classe para selecionar quais mensagens você deseja manipular e ele adicionará as entradas de mapa de mensagens apropriadas e as funções membro do manipulador de mensagens à classe para você. Você só precisa escrever código específico do aplicativo nas funções membro do manipulador.
Se preferir, você sempre poderá escrever entradas de mapa de mensagens e funções membro manualmente.
Em todas as caixas de diálogo com exceção das mais triviais, você adiciona variáveis de membro à classe de caixa de diálogo derivada para armazenar dados inseridos nos controles da caixa de diálogo pelo usuário ou para exibir dados para o usuário. Você pode usar o assistente Adicionar Variável para criar variáveis de membro e associá-las a controles. Ao mesmo tempo, você escolhe um tipo de variável e um intervalo permitido de valores para cada variável. O assistente de código adiciona as variáveis de membro à classe de diálogo derivada.
Um mapa de dados é gerado para manipular automaticamente a troca de dados entre as variáveis de membro e os controles da caixa de diálogo. O mapa de dados fornece funções que inicializam os controles na caixa de diálogo com os valores apropriados, recuperam os dados e os validam.
Para criar uma caixa de diálogo modal, construa um objeto na pilha usando o construtor para sua classe de diálogo derivada e, em seguida, chame DoModal
para criar a janela de diálogo e os respectivos controles. Se você quiser criar uma caixa de diálogo sem modo, chame Create
no construtor da classe de diálogo.
Você também pode criar um modelo na memória usando uma estrutura de dados DLGTEMPLATE, conforme descrito no SDK do Windows. Depois de construir um objeto CDialog
, chame CreateIndirect para criar uma caixa de diálogo sem modo ou chame InitModalIndirect e DoModal para criar uma caixa de diálogo modal.
O mapa de dados de troca e validação é gravado em uma substituição de CWnd::DoDataExchange
que é adicionada à sua nova classe de diálogo. Consulte a função membro DoDataExchange em CWnd
para obter mais informações sobre a funcionalidade de troca e validação.
O programador e a estrutura chamam DoDataExchange
indiretamente por meio de uma chamada para CWnd::UpdateData.
A estrutura chama UpdateData
quando o usuário clica no botão OK para fechar uma caixa de diálogo modal. (Os dados não serão recuperados se o botão Cancelar for clicado.) A implementação padrão de OnInitDialog também chama UpdateData
para definir os valores iniciais dos controles. Normalmente, você substitui OnInitDialog
para dar continuidade à inicialização dos controles. OnInitDialog
é chamado depois que todos os controles de caixa de diálogo são criados e pouco antes da caixa de diálogo ser exibida.
Você pode chamar CWnd::UpdateData
a qualquer momento durante a execução de uma caixa de diálogo modal ou sem modo.
Se você desenvolver uma caixa de diálogo manualmente, adicione as variáveis de membro necessárias à classe de caixa de diálogo derivada e adicione funções membro para definir ou obter esses valores.
Uma caixa de diálogo modal é fechada automaticamente quando o usuário pressiona os botões OK ou Cancelar ou quando o código chama a função membro EndDialog
.
Ao implementar uma caixa de diálogo sem modo, sempre substitua a função membro OnCancel
e chame DestroyWindow
de dentro dela. Não chame a classe base CDialog::OnCancel
, porque ela chama EndDialog
, o que tornará a caixa de diálogo invisível, mas não a destruirá. Você também deve substituir PostNcDestroy
para as caixas de diálogo sem modo para excluir this
, uma vez que as caixas de diálogo sem modo geralmente são alocadas com new
. As caixas de diálogo modais geralmente são construídas no quadro e não precisam de limpeza de PostNcDestroy
.
Para obter mais informações sobre CDialog
, confira Caixas de diálogo.
Hierarquia de herança
CDialog
Requisitos
Cabeçalho: afxwin.h
CDialog::CDialog
Para construir uma caixa de diálogo modal baseada em recurso, chame qualquer forma pública do construtor.
explicit CDialog(
LPCTSTR lpszTemplateName,
CWnd* pParentWnd = NULL);
explicit CDialog(
UINT nIDTemplate,
CWnd* pParentWnd = NULL);
CDialog();
Parâmetros
lpszTemplateName
Contém uma cadeia de caracteres terminada em nulo que é o nome de um recurso de modelo de caixa de diálogo.
nIDTemplate
Contém o número de ID de um recurso de modelo de caixa de diálogo.
pParentWnd
Aponta para o objeto de janela pai ou proprietário (do tipo CWnd) ao qual o objeto de caixa de diálogo pertence. Se for NULL, a janela pai do objeto de caixa de diálogo será definida como a janela principal do aplicativo.
Comentários
Uma forma do construtor fornece acesso ao recurso de caixa de diálogo por nome de modelo. O outro construtor fornece acesso por número de ID de modelo, geralmente com um prefixo IDD_ (por exemplo, IDD_DIALOG1).
Para construir uma caixa de diálogo modal a partir de um modelo na memória, primeiro invoque o construtor protegido sem parâmetros e, em seguida, chame InitModalIndirect
.
Depois de construir uma caixa de diálogo modal com um dos métodos acima, chame DoModal
.
Para construir uma caixa de diálogo sem modo, use a forma protegida do construtor CDialog
. O construtor é protegido porque você precisa derivar uma classe de caixa de diálogo própria para implementar uma caixa de diálogo sem modo. A construção de uma caixa de diálogo sem modo é um processo de duas etapas. Primeiro chame o construtor; em seguida, chame a função membro Create
para criar uma caixa de diálogo baseada em recurso ou chame CreateIndirect
para criar a caixa de diálogo com base em um modelo na memória.
CDialog::Create
Chame Create
para criar uma caixa de diálogo sem modo usando um modelo de caixa de diálogo de um recurso.
virtual BOOL Create(
LPCTSTR lpszTemplateName,
CWnd* pParentWnd = NULL);
virtual BOOL Create(
UINT nIDTemplate,
CWnd* pParentWnd = NULL);
Parâmetros
lpszTemplateName
Contém uma cadeia de caracteres terminada em nulo que é o nome de um recurso de modelo de caixa de diálogo.
pParentWnd
Aponta para o objeto de janela pai (do tipo CWnd) ao qual o objeto de caixa de diálogo pertence. Se for NULL, a janela pai do objeto de caixa de diálogo será definida como a janela principal do aplicativo.
nIDTemplate
Contém o número de ID de um recurso de modelo de caixa de diálogo.
Valor de retorno
Ambos os formulários retornarão um valor diferente de zero se a criação e a inicialização da caixa de diálogo tiverem sido bem-sucedidas; caso contrário, 0.
Comentários
Você pode colocar a chamada a Create
dentro do construtor ou chamá-la depois que o construtor for invocado.
Duas formas da função membro Create
são fornecidas para acesso ao recurso de modelo de caixa de diálogo por nome de modelo ou número de ID de modelo (por exemplo, IDD_DIALOG1).
Para qualquer uma das formas, passe um ponteiro para o objeto de janela pai. Se pParentWnd for NULL, a caixa de diálogo será criada com a janela pai ou proprietário definida como a janela principal do aplicativo.
A função membro Create
retorna imediatamente após criar a caixa de diálogo.
Use o estilo WS_VISIBLE no modelo de caixa de diálogo se a caixa de diálogo deve aparecer quando a janela pai é criada. Caso contrário, você precisa chamar ShowWindow
. Para conhecer mais estilos de caixa de diálogo e a aplicação deles, confira a estrutura DLGTEMPLATE no SDK do Windows e Estilos de janela na Referência do MFC.
Use a função CWnd::DestroyWindow
para destruir uma caixa de diálogo criada pela função Create
.
Exemplo
void CMyDialog::OnMenuShowSimpleDialog()
{
//m_pSimpleDialog initialized to NULL in the constructor of CMyDialog class
m_pSimpleDlg = new CSimpleDlg();
//Check if new succeeded and we got a valid pointer to a dialog object
if (m_pSimpleDlg != NULL)
{
BOOL ret = m_pSimpleDlg->Create(IDD_SIMPLEDIALOG, this);
if (!ret) //Create failed.
{
AfxMessageBox(_T("Error creating Dialog"));
}
m_pSimpleDlg->ShowWindow(SW_SHOW);
}
else
{
AfxMessageBox(_T("Error Creating Dialog Object"));
}
}
CDialog::CreateIndirect
Chame essa função membro para criar uma caixa de diálogo sem modo com base em um modelo de caixa de diálogo na memória.
virtual BOOL CreateIndirect(
LPCDLGTEMPLATE lpDialogTemplate,
CWnd* pParentWnd = NULL,
void* lpDialogInit = NULL);
virtual BOOL CreateIndirect(
HGLOBAL hDialogTemplate,
CWnd* pParentWnd = NULL);
Parâmetros
lpDialogTemplate
Aponta para a memória que contém um modelo de caixa de diálogo usado para criar a caixa de diálogo. Esse modelo está na forma de uma estrutura DLGTEMPLATE e informações de controle, conforme descrito no SDK do Windows.
pParentWnd
Aponta para o objeto de janela pai do objeto de caixa de diálogo (do tipo CWnd). Se for NULL, a janela pai do objeto de caixa de diálogo será definida como a janela principal do aplicativo.
lpDialogInit
Aponta para um recurso DLGINIT.
hDialogTemplate
Contém um identificador para memória global que contém um modelo de caixa de diálogo. Esse modelo está na forma de uma estrutura DLGTEMPLATE
e dados para cada controle na caixa de diálogo.
Valor de retorno
Diferente de zero se a caixa de diálogo foi criada e inicializada com êxito; caso contrário, 0.
Comentários
A função membro CreateIndirect
retorna imediatamente após criar a caixa de diálogo.
Use o estilo WS_VISIBLE no modelo de caixa de diálogo se a caixa de diálogo deve aparecer quando a janela pai é criada. Caso contrário, você precisará chamar ShowWindow
para fazer com que ela apareça. Para obter mais informações sobre como você pode especificar outros estilos de caixa de diálogo no modelo, confira a estrutura DLGTEMPLATE no SDK do Windows.
Use a função CWnd::DestroyWindow
para destruir uma caixa de diálogo criada pela função CreateIndirect
.
As caixas de diálogo que contêm controles ActiveX exigem informações adicionais fornecidas em um recurso DLGINIT.
CDialog::DoModal
Chame essa função membro para invocar a caixa de diálogo modal e retornar o resultado da caixa de diálogo quando terminar.
virtual INT_PTR DoModal();
Valor de retorno
Um valor int
que especifica o valor do parâmetro nResult que foi passado para a função membro CDialog::EndDialog, que é usada para fechar a caixa de diálogo. O valor retornado será -1 se a função não puder criar a caixa de diálogo ou IDABORT se ocorrer algum outro erro, nesse caso, a janela de saída conterá informações de erro de GetLastError.
Comentários
Essa função membro lida com toda a interação com o usuário enquanto a caixa de diálogo está ativa. Isso é o que torna a caixa de diálogo modal; ou seja, o usuário não pode interagir com outras janelas até que a caixa de diálogo seja fechada.
Se o usuário clicar em um dos pushbuttons na caixa de diálogo, como OK ou Cancelar, uma função membro do manipulador de mensagens, como OnOK ou OnCancel, será chamada para tentar fechar a caixa de diálogo. A função membro padrão OnOK
validará e atualizará os dados da caixa de diálogo e fechará a caixa de diálogo com o IDOK de resultado, e a função membro padrão OnCancel
fechará a caixa de diálogo com o IDCANCEL do resultado sem validar nem atualizar os dados da caixa de diálogo. Você pode substituir essas funções de manipulador de mensagens para alterar o comportamento delas.
Observação
PreTranslateMessage
agora é chamado para processamento de mensagem de caixa de diálogo modal.
Exemplo
void CMyDialog::OnMenuShowAboutDialog()
{
// Construct the dialog box passing the
// ID of the dialog template resource
CDialog aboutDlg(IDD_ABOUTBOX);
// Create and show the dialog box
INT_PTR nRet = -1;
nRet = aboutDlg.DoModal();
// Handle the return value from DoModal
switch (nRet)
{
case -1:
AfxMessageBox(_T("Dialog box could not be created!"));
break;
case IDABORT:
// Do something
break;
case IDOK:
// Do something
break;
case IDCANCEL:
// Do something
break;
default:
// Do something
break;
};
}
CDialog::EndDialog
Chame essa função membro para encerrar uma caixa de diálogo modal.
void EndDialog(int nResult);
Parâmetros
nResult
Contém o valor a ser retornado da caixa de diálogo para o chamador de DoModal
.
Comentários
Essa função membro retorna nResult como o valor retornado de DoModal
. Você precisará usar a função EndDialog
para concluir o processamento sempre que uma caixa de diálogo modal for criada.
Você pode chamar EndDialog
a qualquer momento, mesmo em OnInitDialog; nesse caso, você deve fechar a caixa de diálogo antes que ela seja mostrada ou antes que o foco de entrada seja definido.
EndDialog
não fecha a caixa de diálogo imediatamente. Em vez disso, ele define um sinalizador que direciona a caixa de diálogo para fechar assim que o manipulador de mensagens atual retorna.
Exemplo
void CMyDialog::OnMenuShowSimpleModal()
{
CSimpleDlg myDlg;
INT_PTR nRet = myDlg.DoModal();
if (nRet == IDOK || nRet == 5)
{
AfxMessageBox(_T("Dialog closed successfully"));
}
}
void CSimpleDlg::OnRButtonUp(UINT nFlags, CPoint point)
{
UNREFERENCED_PARAMETER(nFlags);
// Do something
int nRet = point.x; // Just any value would do!
EndDialog(nRet); // This value is returned by DoModal!
// Do something
return; // Dialog closed and DoModal returns only here!
}
CDialog::GetDefID
Chame a função membro GetDefID
para obter a ID do controle pushbutton padrão para uma caixa de diálogo.
DWORD GetDefID() const;
Valor de retorno
Um valor de 32 bits (DWORD
). Se o pushbutton padrão tiver um valor de ID, a palavra de ordem alta conterá DC_HASDEFID e a palavra de ordem baixa conterá o valor da ID. Se o pushbutton padrão não tiver um valor de ID, o valor retornado será 0.
Comentários
Geralmente, esse é um botão OK.
CDialog::GotoDlgCtrl
Move o foco para o controle especificado na caixa de diálogo.
void GotoDlgCtrl(CWnd* pWndCtrl);
Parâmetros
pWndCtrl
Identifica a janela (controle) que deve receber o foco.
Comentários
Para obter um ponteiro para o controle (janela filho) a ser passado como pWndCtrl, chame a função membro CWnd::GetDlgItem
, que retorna um ponteiro para um objeto CWnd.
Exemplo
Confira o exemplo de CWnd::GetDlgItem.
CDialog::InitModalIndirect
Chame essa função membro para inicializar um objeto de caixa de diálogo modal usando um modelo de caixa de diálogo que você constrói na memória.
BOOL InitModalIndirect(
LPCDLGTEMPLATE lpDialogTemplate,
CWnd* pParentWnd = NULL,
void* lpDialogInit = NULL);
BOOL InitModalIndirect(
HGLOBAL hDialogTemplate,
CWnd* pParentWnd = NULL);
Parâmetros
lpDialogTemplate
Aponta para a memória que contém um modelo de caixa de diálogo usado para criar a caixa de diálogo. Esse modelo está na forma de uma estrutura DLGTEMPLATE e informações de controle, conforme descrito no SDK do Windows.
hDialogTemplate
Contém um identificador para memória global que contém um modelo de caixa de diálogo. Esse modelo está na forma de uma estrutura DLGTEMPLATE
e dados para cada controle na caixa de diálogo.
pParentWnd
Aponta para o objeto de janela pai ou proprietário (do tipo CWnd) ao qual o objeto de caixa de diálogo pertence. Se for NULL, a janela pai do objeto de caixa de diálogo será definida como a janela principal do aplicativo.
lpDialogInit
Aponta para um recurso DLGINIT.
Valor de retorno
Diferente de zero se o objeto de caixa de diálogo foi criado e inicializado com êxito; caso contrário, 0.
Comentários
Para criar uma caixa de diálogo modal indiretamente, primeiro aloque um bloco global de memória e preencha-o com o modelo da caixa de diálogo. Em seguida, chame o construtor vazio CDialog
para construir o objeto de caixa de diálogo. Em seguida, chame InitModalIndirect
para armazenar o identificador para o modelo de caixa de diálogo na memória. A caixa de diálogo do Windows é criada e exibida posteriormente, quando a função membro DoModal é chamada.
As caixas de diálogo que contêm controles ActiveX exigem informações adicionais fornecidas em um recurso DLGINIT.
CDialog::MapDialogRect
Chame para converter as unidades de caixa de diálogo de um retângulo em unidades de tela.
void MapDialogRect(LPRECT lpRect) const;
Parâmetros
lpRect
Aponta para uma estrutura RECT ou objeto CRect que contém as coordenadas da caixa de diálogo a serem convertidas.
Comentários
As unidades de caixa de diálogo são declaradas em termos da unidade base da caixa de diálogo atual derivada da largura média e da altura dos caracteres na fonte usada para o texto da caixa de diálogo. Uma unidade horizontal é um quarto da unidade de largura base da caixa de diálogo e uma unidade vertical é um oitavo da unidade de altura base da caixa de diálogo.
A função GetDialogBaseUnits
do Windows retorna informações de tamanho para a fonte do sistema, mas você poderá especificar uma fonte diferente para cada caixa de diálogo se usar o estilo DS_SETFONT no arquivo de definição de recurso. A função MapDialogRect
do Windows usa a fonte apropriada para essa caixa de diálogo.
A função membro MapDialogRect
substitui as unidades de caixa de diálogo em lpRect por unidades de tela (pixels) para que o retângulo possa ser usado para criar uma caixa de diálogo ou posicionar um controle dentro de uma caixa.
CDialog::NextDlgCtrl
Move o foco para o próximo controle na caixa de diálogo.
void NextDlgCtrl() const;
Comentários
Se o foco estiver no último controle na caixa de diálogo, ele passará para o primeiro controle.
CDialog::OnCancel
A estrutura chama esse método quando o usuário clica em Cancelar ou pressiona a tecla ESC em uma caixa de diálogo modal ou sem modo.
virtual void OnCancel();
Comentários
Substitua esse método para executar ações (como restaurar dados antigos) quando um usuário fecha a caixa de diálogo clicando em Cancelar ou pressionando a tecla ESC. O padrão fecha uma caixa de diálogo modal chamando EndDialog e fazendo com que DoModal retorne IDCANCEL.
Se você implementar o botão Cancelar em uma caixa de diálogo sem modo, deverá substituir o método OnCancel
e chamar DestroyWindow dentro dele. Não chame o método de classe base, porque ele chamará EndDialog
, o que tornará a caixa de diálogo invisível, mas não a destruirá.
Observação
Você não pode substituir esse método ao usar um objeto CFileDialog
em um programa compilado no Windows XP. Para obter mais informações sobre CFileDialog
, confira Classe CFileDialog.
Exemplo
void CSimpleDlg::OnCancel()
{
// TODO: Add extra cleanup here
// Ensure that you reset all the values back to the
// ones before modification. This handler is called
// when the user doesn't want to save the changes.
if (AfxMessageBox(_T("Are you sure you want to abort the changes?"),
MB_YESNO) == IDNO)
{
// Give the user a chance if he has unknowingly hit the
// Cancel button. If he says No, return. Don't reset. If
// Yes, go ahead and reset the values and close the dialog.
return;
}
m_nMyValue = m_nPrevValue;
m_pMyString = NULL;
CDialog::OnCancel();
}
CDialog::OnInitDialog
Esse método é chamado em resposta à mensagem WM_INITDIALOG
.
virtual BOOL OnInitDialog();
Valor de retorno
Especifica se o aplicativo definiu o foco de entrada como um dos controles na caixa de diálogo. Se OnInitDialog
retornar diferente de zero, o Windows definirá o foco de entrada como o local padrão, o primeiro controle na caixa de diálogo. O aplicativo só poderá retornar 0 se tiver definido explicitamente o foco de entrada para um dos controles na caixa de diálogo.
Comentários
O Windows envia a mensagem WM_INITDIALOG
para a caixa de diálogo durante as chamadas Create, CreateIndirect ou DoModal, que ocorrem imediatamente antes da caixa de diálogo ser exibida.
Substitua esse método se você quiser executar o processamento especial quando a caixa de diálogo for inicializada. Na versão substituída, primeiro chame a classe base OnInitDialog
, mas ignore o valor retornado dela. Normalmente, você retornará TRUE
do método substituído.
O Windows chama a função OnInitDialog
usando o procedimento de caixa de diálogo global padrão comum a todas as caixas de diálogo da biblioteca Microsoft Foundation Class. Ele não chama essa função por meio do mapa de mensagens e, portanto, você não precisa de uma entrada de mapa de mensagens para esse método.
Observação
Você não pode substituir esse método ao usar um objeto CFileDialog
em um programa compilado no Windows Vista ou posterior. Para obter mais informações sobre as alterações a CFileDialog
no Windows Vista e posteriores, confira a Classe CFileDialog.
Exemplo
BOOL CSimpleDlg::OnInitDialog()
{
CDialog::OnInitDialog();
// TODO: Add extra initialization here
m_cMyEdit.SetWindowText(_T("My Name")); // Initialize control values
m_cMyList.ShowWindow(SW_HIDE); // Show or hide a control, etc.
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
CDialog::OnOK
Chamado quando o usuário clica no botão OK (o botão com uma ID de IDOK).
virtual void OnOK();
Comentários
Substitua esse método para executar ações quando o botão OK for ativado. Se a caixa de diálogo incluir validação automática de dados e troca, a implementação padrão desse método validará os dados da caixa de diálogo e atualizará as variáveis apropriadas em seu aplicativo.
Se você implementar o botão OK em uma caixa de diálogo sem modo, deverá substituir o método OnOK
e chamar DestroyWindow dentro dele. Não chame o método de classe base, porque ele chamará EndDialog, o que tornará a caixa de diálogo invisível, mas não a destruirá.
Observação
Você não pode substituir esse método ao usar um objeto CFileDialog
em um programa compilado no Windows XP. Para obter mais informações sobre CFileDialog
, confira Classe CFileDialog.
Exemplo
void CSimpleDlg::OnOK()
{
// TODO: Add extra validation here
// Ensure that your UI got the necessary input
// from the user before closing the dialog. The
// default OnOK will close this.
if (m_nMyValue == 0) // Is a particular field still empty?
{
// Inform the user that he can't close the dialog without
// entering the necessary values and don't close the
// dialog.
AfxMessageBox(_T("Please enter a value for MyValue"));
return;
}
CDialog::OnOK(); // This will close the dialog and DoModal will return.
}
CDialog::OnSetFont
Especifica a fonte que um controle de caixa de diálogo usará ao desenhar texto.
Virtual void OnSetFont(CFont* pFont);
Parâmetros
pFont
[in] Especifica um ponteiro para a fonte que será usada como a fonte padrão para todos os controles nesta caixa de diálogo.
Comentários
A caixa de diálogo usará a fonte especificada como o padrão para todos os controles dela.
O editor de diálogo normalmente define a fonte da caixa de diálogo como parte do recurso de modelo de caixa de diálogo.
Observação
Você não pode substituir esse método ao usar um objeto CFileDialog
em um programa compilado no Windows Vista ou posterior. Para obter mais informações sobre as alterações a CFileDialog
no Windows Vista e posteriores, confira a Classe CFileDialog.
CDialog::PrevDlgCtrl
Define o foco para o controle anterior na caixa de diálogo.
void PrevDlgCtrl() const;
Comentários
Se o foco estiver no primeiro controle na caixa de diálogo, ele passará para o último controle na caixa.
CDialog::SetDefID
Altera o controle pushbutton padrão para uma caixa de diálogo.
void SetDefID(UINT nID);
Parâmetros
Nid
Especifica a ID do controle pushbutton que se tornará o padrão.
CDialog::SetHelpID
Define uma ID de ajuda contextual para a caixa de diálogo.
void SetHelpID(UINT nIDR);
Parâmetros
nIDR
Especifica a ID de ajuda contextual.
Confira também
Exemplo de MFC DLGCBR32
Exemplo de MFC DLGTEMPL
Classe CWnd
Gráfico da hierarquia