Partilhar via


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

CObject

CCmdTarget

CWnd

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