Partilhar via


Classe CPropertyPage

Representa páginas individuais de uma folha de propriedades, também conhecida como uma caixa de diálogo de guia.

Sintaxe

class CPropertyPage : public CDialog

Membros

Construtores públicos

Nome Descrição
CPropertyPage::CPropertyPage Constrói um objeto CPropertyPage.

Métodos públicos

Nome Descrição
CPropertyPage::CancelToClose Altera o botão OK para ler Fechar e desabilita o botão Cancelar, após uma alteração irrecuperável na página de uma folha de propriedades modal.
CPropertyPage::Construct Constrói um objeto CPropertyPage. Use Construct se quiser especificar seus parâmetros no tempo de execução ou se estiver usando matrizes.
CPropertyPage::GetPSP Recupera a estrutura do Windows PROPSHEETPAGE associada ao objeto CPropertyPage.
CPropertyPage::OnApply Chamado pela estrutura quando o botão Aplicar agora é clicado.
CPropertyPage::OnCancel Chamado pela estrutura quando o botão Cancelar é clicado.
CPropertyPage::OnKillActive Chamado pela estrutura quando a página atual não é mais a página ativa. Execute a validação de dados aqui.
CPropertyPage::OnOK Chamado pela estrutura quando o botão OK, Aplicar agora ou Fechar é clicado.
CPropertyPage::OnQueryCancel Chamado pela estrutura quando o botão Cancelar é clicado e antes de o cancelamento ocorrer.
CPropertyPage::OnReset Chamado pela estrutura quando o botão Cancelar é clicado.
CPropertyPage::OnSetActive Chamado pela estrutura quando a página é tornada a página ativa.
CPropertyPage::OnWizardBack Chamado pela estrutura quando o botão Voltar é clicado ao usar uma folha de propriedades do tipo assistente.
CPropertyPage::OnWizardFinish Chamado pela estrutura quando o botão Concluir é clicado ao usar uma folha de propriedades do tipo assistente.
CPropertyPage::OnWizardNext Chamado pela estrutura quando o botão Avançar é clicado ao usar uma folha de propriedades do tipo assistente.
CPropertyPage::QuerySiblings Encaminha a mensagem para cada página da folha de propriedades.
CPropertyPage::SetModified Chame para ativar ou desativar o botão Aplicar Agora.

Membros de Dados Públicos

Nome Descrição
CPropertyPage::m_psp A estrutura PROPSHEETPAGE do Windows. Fornece acesso aos parâmetros básicos da página de propriedades.

Comentários

Assim como acontece com as caixas de diálogo padrão, você deriva uma classe de CPropertyPage para cada página em sua folha de propriedades. Para usar objetos derivados de CPropertyPage, primeiro crie um objeto CPropertySheet e, em seguida, crie um objeto para cada página que vai na folha de propriedades. Chame CPropertySheet::AddPage cada página na planilha e exiba a folha de propriedades chamando CPropertySheet::DoModal para uma folha de propriedades modal ou CPropertySheet::Create para uma folha de propriedades sem modelo.

É possível criar um tipo de caixa de diálogo de guia chamada assistente, que consiste em uma folha de propriedades com uma sequência de páginas de propriedades que orientam o usuário pelas etapas de uma operação, como a configuração de um dispositivo ou a criação de um boletim informativo. Em uma caixa de diálogo de guia de tipo de assistente, as páginas de propriedade não têm guias, e apenas uma página de propriedade fica visível por vez. Além disso, em vez de ter botões OK e Aplicar agora, uma caixa de diálogo de guia do tipo assistente tem um botão Voltar, um botão Avançar ou Concluir e um botão Cancelar.

Para obter mais informações sobre como estabelecer uma folha de propriedades como um assistente, consulte CPropertySheet::SetWizardMode. Para obter mais informações sobre como objetos CPropertyPage, consulte o artigo Folhas de propriedades e páginas de propriedades.

Hierarquia de herança

CObject

CCmdTarget

CWnd

CDialog

CPropertyPage

Requisitos

Cabeçalho: afxdlgs.h

CPropertyPage::CancelToClose

Chame esta função depois que uma alteração irrecuperável for feita nos dados em uma página de uma folha de propriedades modal.

void CancelToClose();

Comentários

Esta função alterará o botão OK para Fechar e desabilitará o botão Cancelar. Essa alteração alerta o usuário de que uma alteração é permanente e as modificações não podem ser canceladas.

A função membro CancelToClose não faz nada em uma folha de propriedades de modeless, porque uma folha de propriedades modeless não tem um botão Cancelar por padrão.

Exemplo

Consulte o exemplo de CPropertyPage::QuerySiblings.

CPropertyPage::Construct

Chame essa função membro para construir um objeto CPropertyPage.

void Construct(
    UINT nIDTemplate,
    UINT nIDCaption = 0);

void Construct(
    LPCTSTR lpszTemplateName,
    UINT nIDCaption = 0);

void Construct(
    UINT nIDTemplate,
    UINT nIDCaption,
    UINT nIDHeaderTitle,
    UINT nIDHeaderSubTitle = 0);

void Construct(
    LPCTSTR lpszTemplateName,
    UINT nIDCaption,
    UINT nIDHeaderTitle,
    UINT nIDHeaderSubTitle = 0);

Parâmetros

nIDTemplate
ID do modelo usado para esta página.

nIDCaption
ID do nome a ser colocado na guia desta página. Se 0, o nome será retirado do modelo de caixa de diálogo desta página.

lpszTemplateName
Contém uma cadeia de caracteres terminada em nulo que é o nome de um recurso de modelo.

nIDHeaderTitle
ID do nome a ser colocado no local do título do cabeçalho da página de propriedade. Por padrão, 0.

nIDHeaderSubTitle
ID do nome a ser colocado no local do subtítulo do cabeçalho da página de propriedade. Por padrão, 0.

Comentários

O objeto é exibido depois que todas as seguintes condições são atendidas:

  • A página foi adicionada a uma folha de propriedades usando CPropertySheet::AddPage.

  • A função DoModal ou Create da folha de propriedades foi chamada.

  • O usuário selecionou (com guias para) esta página.

Chame Construct se um dos outros construtores de classe não tiver sido chamado. A função de membro Construct é flexível porque você pode deixar a instrução de parâmetro em branco e especificar vários parâmetros e construção em qualquer ponto do código.

Você deve usar Construct quando trabalha com matrizes e deve chamar Construct para cada membro da matriz para que os membros de dados sejam atribuídos valores adequados.

Exemplo

// Declare a CPropertySheet object.
CPropertySheet sheet(_T("Simple PropertySheet"));

// Create three CPropertyPage objects whose template IDs are specified
// in rgID array, and add each page to the CPropertySheet object. 
const int c_cPages = 3;
CPropertyPage   pages[c_cPages];
UINT rgID[c_cPages] = { IDD_STYLE, IDD_COLOR, IDD_SHAPE };
for (int i = 0; i < c_cPages; i++)
{
   pages[i].Construct(rgID[i]);
   sheet.AddPage(&pages[i]);
}

// Display a modal CPropertySheet dialog.
sheet.DoModal();

CPropertyPage::CPropertyPage

Constrói um objeto CPropertyPage.

CPropertyPage();

explicit CPropertyPage(
    UINT nIDTemplate,
    UINT nIDCaption = 0,
    DWORD dwSize = sizeof(PROPSHEETPAGE));

explicit CPropertyPage(
    LPCTSTR lpszTemplateName,
    UINT nIDCaption = 0,
    DWORD dwSize = sizeof(PROPSHEETPAGE));

CPropertyPage(
    UINT nIDTemplate,
    UINT nIDCaption,
    UINT nIDHeaderTitle,
    UINT nIDHeaderSubTitle = 0,
    DWORD dwSize = sizeof(PROPSHEETPAGE));

CPropertyPage(
    LPCTSTR lpszTemplateName,
    UINT nIDCaption,
    UINT nIDHeaderTitle,
    UINT nIDHeaderSubTitle = 0,
    DWORD dwSize = sizeof(PROPSHEETPAGE));

Parâmetros

nIDTemplate
ID do modelo usado para esta página.

nIDCaption
ID do nome a ser colocado na guia desta página. Se 0, o nome será retirado do modelo de caixa de diálogo desta página.

dwSize
lpszTemplateNameAponta para uma cadeia de caracteres que contém o nome do modelo para esta página. Não pode ser NULL.

nIDHeaderTitle
ID do nome a ser colocado no local do título do cabeçalho da página de propriedade.

nIDHeaderSubTitle
ID do nome a ser colocado no local do subtítulo do cabeçalho da página de propriedade.

Comentários

O objeto é exibido depois que todas as seguintes condições são atendidas:

  • A página foi adicionada a uma folha de propriedades usando CPropertySheet::AddPage.

  • A função DoModal ou Create da folha de propriedades foi chamada.

  • O usuário selecionou (com guias para) esta página.

Se você tiver vários parâmetros (por exemplo, se estiver usando uma matriz), use CPropertySheet::Construct em vez de CPropertyPage.

Exemplo

// Declare a CStylePage object, which is a CPropertyPage-derived class.
CStylePage stylePage;

// Declare a CPropertyPage object with IDD_SHAPE, the ID of the 
// template used for this page. 
CPropertyPage shapePage(IDD_SHAPE);

CPropertyPage::GetPSP

Recupera a estrutura do Windows PROPSHEETPAGE associada ao objeto CPropertyPage.

const PROPSHEETPAGE& GetPSP() const;

PROPSHEETPAGE& GetPSP();

Valor de retorno

Uma referência à estrutura PROPSHEETPAGE.

CPropertyPage::m_psp

m_psp é uma estrutura cujos membros armazenam as características de PROPSHEETPAGE.

PROPSHEETPAGE m_psp;

Comentários

Use essa estrutura para inicializar a aparência de uma página de propriedade depois que ela for construída.

Para obter mais informações sobre essa estrutura, incluindo uma listagem de seus membros, consulte PROPSHEETPAGE no SDK do Windows.

Exemplo

CPropertySheet sheet(_T("Simple PropertySheet"));

// Change the settings of the three pages to enable property sheet's 
// Help button when the page is active.  CStylePage, CShapePage, and 
// CColorPage are CPropertyPage-derived classes.
CStylePage pageStyle;
pageStyle.m_psp.dwFlags |= PSP_HASHELP;

CColorPage pageColor;
pageColor.m_psp.dwFlags |= PSP_HASHELP;

CShapePage pageShape;
pageShape.m_psp.dwFlags |= PSP_HASHELP;

sheet.AddPage(&pageStyle);
sheet.AddPage(&pageColor);
sheet.AddPage(&pageShape);

sheet.SetWizardMode();

sheet.DoModal();

CPropertyPage::OnApply

Essa função de membro é chamada pela estrutura quando o usuário escolhe o botão OK ou Aplicar agora.

virtual BOOL OnApply();

Valor de retorno

Será diferente de zero se as alterações forem aceitas; caso contrário, 0.

Comentários

Quando a estrutura chama essa função, as alterações feitas em todas as páginas de propriedade na folha de propriedades são aceitas, a folha de propriedades retém o foco e OnApply retorna TRUE (o valor 1). Antes OnApply de poder ser chamado pela estrutura, você deverá ter chamado SetModified e definido seu parâmetro como TRUE. Isso ativará o botão Aplicar agora assim que o usuário fizer uma alteração na página de propriedades.

Substitua essa função de membro para especificar qual ação seu programa toma quando o usuário seleciona o botão Aplicar agora. Ao ser substituída, a função deve retornar TRUE para aceitar alterações e FALSE para impedir que as alterações entrem em vigor.

A implementação padrão de OnApply chama OnOK.

Para obter mais informações sobre mensagens de notificação enviadas quando o usuário pressionar o botão Aplicar agora ou OK em uma folha de propriedades, consulte PSN_APPLY no SDK do Windows.

Exemplo

Consulte o exemplo de CPropertyPage::OnOK.

CPropertyPage::OnCancel

Essa função de membro é chamada pela estrutura quando o botão Cancelar é selecionado.

virtual void OnCancel();

Comentários

Substitua essa função de membro para executar ações do botão Cancelar. O padrão nega as alterações que foram feitas.

Exemplo

// Discard any selection the user made to this page.  The object
// in the view will be painted with the initial color when the
// CPropertySheet dialog is first shown. CColorPage is a 
// CPropertyPage-derived class.
void CColorPage::OnCancel()
{
   // Reset the color saved in the document class.  m_InitialColor
   // is a member variable of CColorPage and it is the color shown 
   // in the view before CPropertySheet is shown.
   // doc->m_Color is the color saved in the document class, and 
   // this is the color to be used by the view class.
   CMDIFrameWnd* pFrame = (CMDIFrameWnd*)AfxGetMainWnd();
   CMDIChildWnd* pChild = pFrame->MDIGetActive();
   CPSheetDoc* doc = (CPSheetDoc*)pChild->GetActiveDocument();
   doc->m_Color = m_InitialColor;

   // Tell the view to paint with the initial color.
   CView* view = pChild->GetActiveView();
   view->Invalidate();

   CPropertyPage::OnCancel();
}

// The default MFC implementation of OnReset() would call OnCancel().
void CColorPage::OnReset()
{
   CPropertyPage::OnReset();
}

CPropertyPage::OnKillActive

Essa função de membro é chamada pela estrutura quando a página não é mais a página ativa.

virtual BOOL OnKillActive();

Valor de retorno

Diferente de zero se os dados foram atualizados com êxito, caso contrário, 0.

Comentários

Substitua essa função de membro para executar tarefas especiais de validação de dados.

A implementação padrão dessa função de membro copia as configurações dos controles na página de propriedade para as variáveis de membro da página de propriedade. Se os dados não tiverem sido atualizados com êxito devido a um erro de DDV (validação de dados de caixa de diálogo), a página manterá o foco.

Depois que essa função membro retornar com êxito, a estrutura chamará a função OnOK da página.

Exemplo

// Validate the value entered to the "Number" edit control. Its
// value must be at least one. If not, tell the user and set the
// focus to the "Number" edit control. CStylePage is a 
// CPropertyPage-derived class.
BOOL CStylePage::OnKillActive() 
{
   int num = GetDlgItemInt(IDC_NUMOBJECTS);
   if (num <= 0)
   {
      AfxMessageBox(_T("Number of objects must be at least 1."));
      CEdit* edit = (CEdit*) GetDlgItem(IDC_NUMOBJECTS);
      edit->SetFocus();
      edit->SetSel(0, -1);
      return 0;
   }

   return CPropertyPage::OnKillActive();
}

CPropertyPage::OnOK

Essa função de membro é chamada pela estrutura quando o usuário escolhe o botão OK ou Aplicar agora, imediatamente após a estrutura chamar OnKillActive.

virtual void OnOK();

Comentários

Quando o usuário escolhe o botão OK ou Aplicar agora, a estrutura recebe a notificação PSN_APPLY da página de propriedade. A chamada para OnOK não será feita se você chamar CPropertySheet::PressButton porque a página de propriedade não envia a notificação nesse caso.

Substitua essa função de membro para implementar um comportamento adicional específico para a página ativa atualmente quando o usuário ignorar toda a folha de propriedades.

A implementação padrão dessa função de membro marca a página como "limpa" para refletir que os dados foram atualizados na função OnKillActive.

Exemplo

// Accept the new color selection and dismiss the CPropertySheet
// dialog. The view's object will be painted with the new selected
// color. CColorPage is a CPropertyPage-derived class.
void CColorPage::OnOK() 
{
   // Store the new selected color to a member variable of 
   // document class.  m_Color is a member varible of CColorPage 
   // and it stores the new selected color.  doc->m_Color is 
   // the color saved in the document class and it is the color 
   // used by the view class.
   CMDIFrameWnd* pframe = (CMDIFrameWnd*) AfxGetMainWnd();
   CMDIChildWnd* pchild = pframe->MDIGetActive();
   CPSheetDoc* doc = (CPSheetDoc*) pchild->GetActiveDocument();
   doc->m_Color = m_Color;

   // Tell the view to paint with the new selected color.
   CView* view = pchild->GetActiveView();
   view->Invalidate();
  
   CPropertyPage::OnOK();
}

// The default MFC implementation of OnApply() would call OnOK().
BOOL CColorPage::OnApply() 
{
   return CPropertyPage::OnApply();
}

CPropertyPage::OnQueryCancel

Essa função de membro é chamada pela estrutura quando o usuário seleciona o botão Cancelar e antes da ação de cancelamento ter ocorrido.

virtual BOOL OnQueryCancel();

Valor de retorno

Retorna FALSE para impedir a operação de cancelamento ou TRUE para permiti-la.

Comentários

Substitua essa função de membro para especificar uma ação que o programa executa quando o usuário seleciona o botão Cancelar.

A implementação padrão de OnQueryCancel retorna TRUE.

Exemplo

// Query the user whether to abort the changes if the new selected
// color (m_Color) is different from the initial color 
// (m_InitialColor) when the CPropertySheet dialog is first shown.
// CColorPage is a CPropertyPage-derived class.
BOOL CColorPage::OnQueryCancel() 
{
   if (m_InitialColor != m_Color)
   {
      if (AfxMessageBox(_T("Abort the changes?"), MB_YESNO) == IDNO)
         return FALSE;  
   }

   return CPropertyPage::OnQueryCancel();
}

CPropertyPage::OnReset

Essa função de membro é chamada pela estrutura quando o usuário escolhe o botão Cancelar.

virtual void OnReset();

Comentários

Quando a estrutura chama essa função, as alterações em todas as páginas de propriedades feitas pelo usuário que escolheu anteriormente o botão Aplicar agora são descartadas, e a folha de propriedades mantém o foco.

Substitua essa função de membro para especificar qual ação que o programa executa quando o usuário seleciona o botão Cancelar.

A implementação padrão de OnReset não faz nada.

Exemplo

Consulte o exemplo de CPropertyPage::OnCancel.

CPropertyPage::OnSetActive

Essa função de membro é chamada pela estrutura quando a página é escolhida pelo usuário e se torna a página ativa.

virtual BOOL OnSetActive();

Valor de retorno

Diferente de zero se a página foi definida como ativa com êxito; caso contrário, 0.

Comentários

Substitua essa função de membro para executar tarefas quando uma página for ativada. Sua substituição dessa função de membro normalmente chamaria a versão padrão após a atualização de membros de dados, para permitir que ela atualizasse os controles de página com os novos dados.

A implementação padrão criará a janela para a página, se não tiver sido criada anteriormente, e a tornará a página ativa.

Exemplo

Consulte o exemplo de CPropertySheet::SetFinishText.

CPropertyPage::OnWizardBack

Essa função de membro é chamada pela estrutura quando o usuário seleciona o botão Voltar em um assistente.

virtual LRESULT OnWizardBack();

Valor de retorno

0 para avançar automaticamente para a próxima página; -1 para impedir que a página seja alterada. Para ir para uma página diferente da próxima, retorne o identificador da caixa de diálogo a ser exibida.

Comentários

Substitua essa função de membro para especificar alguma ação que o usuário deve executar quando o botão Voltar for pressionado.

Para obter mais informações sobre como criar uma folha de propriedades do tipo assistente, consulte CPropertySheet::SetWizardMode.

Exemplo

// The Back button is selected from the propertysheet.  Get the selected 
// radio button of the page by looping through all buttons on the 
// pages.  m_radioColor is a member variable of 
// CColorPage (a CPropertyPage-derived class).  Its initial value 
// is initialized in OnInitDialog().
LRESULT CColorPage::OnWizardBack()
{
   for (int id = IDC_RADIOBLACK; id <= IDC_RADIOGREEN; id++)
   {
      CButton* button = (CButton*)GetDlgItem(id);
      if (button->GetCheck() == 1)
      {
         m_radioColor = id - IDC_RADIOBLACK;
         break;
      }
   }

   return CPropertyPage::OnWizardBack();
}

CPropertyPage::OnWizardFinish

Essa função de membro é chamada pela estrutura quando o usuário seleciona o botão Concluir em um assistente.

virtual BOOL OnWizardFinish();

Valor de retorno

Diferente de zero se a folha de propriedades for destruída quando o assistente for concluído; caso contrário, zero.

Comentários

Quando um usuário seleciona o botão Concluir em um assistente, a estrutura chama essa função; quando OnWizardFinish retorna TRUE (um valor diferente de zero), a folha de propriedades pode ser destruída (mas não é realmente destruída). Chame DestroyWindow para destruir a folha de propriedades. Não chame DestroyWindow de OnWizardFinish; fazer isso causará corrupção de heap ou outros erros.

Você pode substituir essa função de membro para especificar alguma ação que o usuário deve executar quando o botão Concluir é pressionado. Ao substituir essa função, retorne FALSE para impedir que a folha de propriedades seja destruída.

Para obter mais informações sobre mensagens de notificação enviadas quando o usuário pressionar o botão Concluir em uma folha de propriedades do assistente, consulte PSN_WIZFINISH no SDK do Windows.

Para obter mais informações sobre como criar uma folha de propriedades do tipo assistente, consulte CPropertySheet::SetWizardMode.

Exemplo

// Inform users regarding the selections they have made by 
// navigating the pages in propertysheet.
BOOL CShapePage::OnWizardFinish()
{
   CString report = _T("You have selected the following options:\n");

   // Get the number of property pages from CPropertySheet.
   CPropertySheet* sheet = (CPropertySheet*)GetParent();
   int count = sheet->GetPageCount();

   // Get the formatted string from each page. This formatted string 
   // will be shown in a message box. Each page knows about the 
   // string to be displayed. For simplicity, we derive a class 
   // from CPropertyPage called CMyPropertyPage. CMyPropertyPage 
   // has a pure virtual member function called GetPageSelections().
   // All pages in the property sheet must be derived from 
   // CMyPropertyPage so we loop through each page to get the 
   // formatted string by calling the GetPageSelections() function.
   for (int i = 0; i < count; i++)
   {
      CMyPropertyPage* page = (CMyPropertyPage*)sheet->GetPage(i);

      CString str;
      page->GetPageSelections(str);
      report += _T("\n") + str;
   }

   AfxMessageBox(report);

   return CPropertyPage::OnWizardFinish();
}

 

// An example of implementing the GetPageSelections() for CStylePage.
// CStylePage is a CMyPropertyPage-derived class, which in turn is a 
// CPropertyPage-derived class.
void CStylePage::GetPageSelections(CString& str)
{
   str.Format(_T("Number of objects to be created = %d"), m_NumObjects);
}

 

// An example of implementing the GetPageSelections() for CColorPage.
// CColorPage is a CMyPropertyPage-derived class, which in turn is a 
// CPropertyPage-derived class.
void CColorPage::GetPageSelections(CString& str)
{
   str = _T("Color selected is ");
   switch (m_Color)
   {
   case RGB(0, 0, 0):
      str += _T("Black");
      break;

   case RGB(255, 0, 0):
      str += _T("Red");
      break;

   case RGB(0, 255, 0):
      str += _T("Green");
      break;

   case RGB(0, 0, 255):
      str += _T("Blue");
      break;

   default:
      str += _T("Custom");
      break;
   }
}

 

// An example of implementing the GetPageSelections() for CShapePage.
// CShapePage is a CMyPropertyPage-derived class, which in turn is a 
// CPropertyPage-derived class.
void CShapePage::GetPageSelections(CString& str)
{
   CString shapename;
   switch (m_Selection)
   {
   case IDC_RECTANGLE:
      shapename = _T("Rectangle");
      break;

   case IDC_ROUND_RECTANGLE:
      shapename = _T("Round Rectangle");
      break;

   case IDC_ELLIPSE:
      shapename = _T("Ellipse");
      break;
   }

   str.Format(_T("Shape to be created is %s"), shapename);
}

CPropertyPage::OnWizardNext

Essa função de membro é chamada pela estrutura quando o usuário seleciona o botão Avançar em um assistente.

virtual LRESULT OnWizardNext();

Valor de retorno

0 para avançar automaticamente para a próxima página; -1 para impedir que a página seja alterada. Para ir para uma página diferente da próxima, retorne o identificador da caixa de diálogo a ser exibida.

Comentários

Substitua essa função membro para especificar alguma ação que o usuário deverá executar quando o botão Avançar for pressionado.

Para obter mais informações sobre como criar uma folha de propriedades do tipo assistente, consulte CPropertySheet::SetWizardMode.

Exemplo

// The Next button is selected from the propertysheet. Show the 
// second page of the propertysheet ONLY if a non-zero value is 
// entered to the Number edit control of the CStylePage. Otherwise
// display a message to the user and stay on the current page.

LRESULT CStylePage::OnWizardNext()
{
   // Get the number from the edit control
   int num = GetDlgItemInt(IDC_NUMOBJECTS);

   if (num == 0)
   {
      // Display a message to the user
      AfxMessageBox(_T("Supply a non-zero number on the edit control"), MB_OK);

      // Stay on the current page
      return -1;
   }

   // CPropertyPage::OnWizardNext returns zero and causes
   // the property sheet to display the next page
   return CPropertyPage::OnWizardNext();
}

CPropertyPage::QuerySiblings

Chame essa função membro para encaminhar uma mensagem para cada página na folha de propriedades.

LRESULT QuerySiblings(
    WPARAM wParam,
    LPARAM lParam);

Parâmetros

wParam
Especifica informações adicionais dependentes de mensagens.

lParam
Especifica informações adicionais dependentes de mensagens

Valor de retorno

O valor diferente de zero de uma página na folha de propriedades ou 0 se todas as páginas retornarem um valor de 0.

Comentários

Se uma página retornar um valor não zero, a folha de propriedades não enviará a mensagem para páginas subsequentes.

Exemplo

// Validate the value entered in the Number edit control. If its 
// value is not a natural number, request CPropertySheet (i.e. parent
// window of the page) to send a PSM_QUERYSIBLINGS message to each
// LOADED page (a page won't be loaded in memory until it is shown).
// If one of the pages returns a nonzero value in response to the 
// PSM_QUERYSIBLINGS message, then inform the user and change the OK
// to Close and disable the Cancel button. CStylePage is a 
// CPropertyPage-derived class.
BOOL CStylePage::OnApply()
{
   int num = GetDlgItemInt(IDC_NUMOBJECTS);
   if (num <= 0)
   {
      if (QuerySiblings(num, 0L))
      {
         AfxMessageBox(_T("Invalid data is entered.  Choose Close ")
            _T("button to close the dialog."));
         CancelToClose();
      }
   }

   return CPropertyPage::OnApply();
}

 

// This is an example of trapping the PSM_QUERYSIBLINGS in one of
// the pages. CColorPage is a CPropertyPage-derived class.  Upon 
// receiving this message, wParam contains the value passed to 
// QuerySiblings() call. CColorPage will check this value and return
// FALSE only if the value is greater than 1.
ON_MESSAGE(PSM_QUERYSIBLINGS, &CColorPage::OnQuerySiblings)

 

LRESULT CColorPage::OnQuerySiblings(WPARAM wParam, LPARAM lParam)
{
   UNREFERENCED_PARAMETER(lParam);
   return (wParam <= 0);
}

CPropertyPage::SetModified

Chame essa função de membro para habilitar ou desabilitar o botão Aplicar agora, com base em se as configurações na página de propriedade devem ser aplicadas ao objeto externo apropriado.

void SetModified(BOOL bChanged = TRUE);

Parâmetros

bChanged
TRUE para indicar que as configurações da página de propriedade foram modificadas desde a última vez em que foram aplicadas; FALSE para indicar que as configurações da página de propriedade foram aplicadas ou devem ser ignoradas.

Comentários

A estrutura mantém o controle de quais páginas são "sujas", ou seja, páginas de propriedade para as quais você chamou SetModified( TRUE ). O botão Aplicar Agora sempre será habilitado se você chamar SetModified( TRUE ) para uma das páginas. O botão Aplicar Agora será desabilitado quando você chamar SetModified( FALSE ) para uma das páginas, mas, somente se nenhuma das outras páginas estiver "suja".

Exemplo

// OnColorClicked() is a member function of CColorPage (a
// CPropertyPage-derived class). It is called whenever a radio button
// is selected on the page. Call SetModified() to enable the Apply 
// button whenever a new selection is made. m_Color is a member
// variable of CColorPage and it is to store the selected RGB color.
// Its entry in the message map looks like this:
// ON_CONTROL_RANGE(BN_CLICKED, IDC_BLACK, IDC_GREEN, CColorPage::OnColorClicked)
void CColorPage::OnColorClicked(UINT nCmdID)
{
   COLORREF color = m_Color;
   switch (nCmdID)
   {
   case IDC_RADIOBLACK:
      color = RGB(0, 0, 0);
      m_radioColor = crBlack;
      break;

   case IDC_RADIORED:
      color = RGB(255, 0, 0);
      m_radioColor = crRed;
      break;

   case IDC_RADIOGREEN:
      color = RGB(0, 255, 0);
      m_radioColor = crGreen;
      break;

   case IDC_RADIOBLUE:
      color = RGB(0, 0, 255);
      m_radioColor = crBlue;
      break;
   }

   if (color != m_Color)
   {
      m_Color = color;
      SetModified();    // Enable Apply Now button.
   }

   UpdateData(FALSE);
}

Confira também

Exemplo de MFC CMNCTRL1
Exemplo de MFC CMNCTRL2
Exemplo de MFC PROPDLG
Exemplo de MFC SNAPVW
Classe CDialog
Gráfico da hierarquia
Classe CPropertySheet