Partilhar via


CPropertyPage Classe

Observação

A biblioteca Microsoft Foundation Classes (MFC) continua a ser suportada. No entanto, já não estamos a adicionar funcionalidades nem a atualizar a documentação.

Representa páginas individuais de uma folha de propriedades, também conhecida como caixa de diálogo de tabulação.

Sintaxe

class CPropertyPage : public CDialog

Membros

Construtores Públicos

Nome Description
CPropertyPage::CPropertyPage Constrói um CPropertyPage objeto.

Métodos Públicos

Nome Description
CPropertyPage::CancelToClose Altera o botão OK para ler Fechar e desativa o botão Cancelar , após uma alteração irrecuperável na página de uma folha de propriedades modais.
CPropertyPage::Construct Constrói um CPropertyPage objeto. Usa Construct se quiseres especificar os teus parâmetros em tempo de execução, ou se estiveres a usar arrays.
CPropertyPage::GetPSP Recupera a estrutura Windows PROPSHEETPAGE associada ao CPropertyPage objeto.
CPropertyPage::OnApply É chamado pelo framework quando o botão Aplicar Agora é clicado.
CPropertyPage::OnCancel É chamado pelo framework quando o botão Cancelar é carregado.
CPropertyPage::OnKillActive Chamada pelo framework quando a página atual já não é a página ativa. Realize a validação dos dados aqui.
CPropertyPage::OnOK É chamado pelo framework quando se clica nos botões OK, Aplicar Agora ou Fechar .
CPropertyPage::OnQueryCancel Chamada pelo framework quando o botão Cancelar é clicado e antes de o cancelamento ter ocorrido.
CPropertyPage::OnReset É chamado pelo framework quando o botão Cancelar é carregado.
CPropertyPage::OnSetActive Chamada pelo framework quando a página é tornada a página ativa.
CPropertyPage::OnWizardBack É chamado pelo framework quando o botão Voltar é clicado enquanto se usa uma folha de propriedades do tipo assistente.
CPropertyPage::OnWizardFinish É chamada pela framework quando o botão Terminar é clicado enquanto se usa uma folha de propriedades do tipo assistente.
CPropertyPage::OnWizardNext Chamado pela framework quando o botão Seguinte é clicado enquanto se usa 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 Description
CPropertyPage::m_psp A estrutura Windows PROPSHEETPAGE . Fornece acesso aos parâmetros básicos da página de propriedades.

Observações

Tal como nas caixas de diálogo padrão, derivas uma classe de CPropertyPage para cada página da tua folha de propriedades. Para usar CPropertyPageobjetos derivados de -, primeiro crie um CPropertySheet objeto e depois crie um objeto para cada página que vai na folha de propriedades. Chame CPropertySheet::AddPage cada página da folha e depois mostre a folha de propriedades pedindo CPropertySheet::DoModal uma folha de propriedades modais, ou CPropertySheet::Create uma folha de propriedades sem modos.

Pode criar um tipo de caixa de diálogo de separação chamada assistente, que consiste numa folha de propriedades com uma sequência de páginas de propriedades que orientam o utilizador nos passos de uma operação, como configurar um dispositivo ou criar uma newsletter. Numa caixa de diálogo tipo separador, as páginas de propriedades não têm separadores, e apenas uma página de propriedades é visível de cada vez. Além disso, em vez de ter os botões OK e Aplicar Agora, uma caixa de diálogo tipo mago tem um botão Voltar atrás, um botão Próximo ou Terminar, e um botão Cancelar.

Para mais informações sobre como estabelecer uma ficha de propriedades como um feiticeiro, consulte CPropertySheet::SetWizardMode. Para mais informações sobre o uso CPropertyPage de objetos, consulte o artigo Folhas de Propriedades e Páginas de Propriedades.

Hierarquia de herança

CObject

CCmdTarget

CWnd

CDialog

CPropertyPage

Requerimentos

Cabeçalho:afxdlgs.h

CPropertyPage::CancelToClose

Chame esta função após uma alteração irrecuperável ter sido feita aos dados numa página de uma folha de propriedades modais.

void CancelToClose();

Observações

Esta função altera o botão OK para Fechar e desativa o botão Cancelar . Esta alteração alerta o utilizador de que uma alteração é permanente e que as modificações não podem ser canceladas.

A CancelToClose função membro não faz nada numa folha de propriedades sem modos, porque uma folha de propriedades sem modos não tem um botão Cancelar por defeito.

Example

Veja o exemplo para CPropertyPage::QuerySiblings.

CPropertyPage::Construct

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

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 utilizado nesta página.

nIDCaption
ID do nome a colocar no separador desta página. Se for 0, o nome será retirado do modelo de diálogo desta página.

lpszTemplateName
Contém uma cadeia terminada por null que é o nome de um recurso template.

nIDHeaderTitle
ID do nome a ser colocado na localização do título do cabeçalho da página da propriedade. Por defeito, 0.

nIDHeaderSubTitle
ID do nome a ser colocado na localização das legendas no cabeçalho da página de propriedades. Por defeito, 0.

Observações

O objeto é apresentado após todas as seguintes condições serem cumpridas:

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

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

  • O utilizador selecionou (separou para) esta página.

Liga Construct se um dos outros construtores de classe ainda não foi chamado. A Construct função membro é flexível porque podes deixar a instrução parameter em branco e depois especificar múltiplos parâmetros e construção em qualquer ponto do teu código.

Deve usar Construct quando trabalhar com arrays, e deve chamar Construct cada membro do array para que os membros de dados recebam valores corretos.

Example

// 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 CPropertyPage objeto.

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 utilizado nesta página.

nIDCaption
ID do nome a colocar no separador desta página. Se for 0, o nome será retirado do modelo de diálogo desta página.

dwSize
lpszTemplateName Aponta para uma cadeia que contém o nome do modelo desta página. Não pode ser NULL.

nIDHeaderTitle
ID do nome a ser colocado na localização do título do cabeçalho da página da propriedade.

nIDHeaderSubTitle
ID do nome a ser colocado na localização das legendas no cabeçalho da página de propriedades.

Observações

O objeto é apresentado após todas as seguintes condições serem cumpridas:

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

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

  • O utilizador selecionou (separou para) esta página.

Se tiver múltiplos parâmetros (por exemplo, se estiver a usar um array), use CPropertySheet::Construct em vez de CPropertyPage.

Example

// 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 Windows PROPSHEETPAGE associada ao CPropertyPage objeto.

const PROPSHEETPAGE& GetPSP() const;

PROPSHEETPAGE& GetPSP();

Valor de retorno

Uma referência à PROPSHEETPAGE estrutura.

CPropertyPage::m_psp

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

PROPSHEETPAGE m_psp;

Observações

Use esta estrutura para inicializar a aparência de uma página de propriedades depois de construída.

Para mais informações sobre esta estrutura, incluindo uma lista dos seus membros, consulte PROPSHEETPAGE o SDK do Windows.

Example

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

Esta função membro é chamada pelo framework quando o utilizador escolhe o botão OK ou o botão Aplicar Agora .

virtual BOOL OnApply();

Valor de retorno

Não nula se as alterações forem aceites; caso contrário, 0.

Observações

Quando o framework chama esta função, as alterações feitas em todas as páginas de propriedades da folha de propriedades são aceites, a folha de propriedades mantém o foco e OnApply retorna TRUE (o valor 1). Antes de OnApply poder ser chamado pelo framework, deve ter chamado SetModified e definido o seu parâmetro para TRUE. Isto ativará o botão Aplicar Agora assim que o utilizador fizer uma alteração na página de propriedades.

Substitua esta função membro para especificar que ação o seu programa realiza quando o utilizador seleciona o botão Aplicar Agora . Ao ser sobreposta, a função deve regressar TRUE para aceitar alterações e FALSE impedir que as alterações tenham efeito.

A implementação padrão das OnApply chamadas OnOK.

Para mais informações sobre mensagens de notificação enviadas quando o utilizador pressiona o botão Aplicar Agora ou OK numa folha de propriedades, consulte PSN_APPLY o SDK do Windows.

Example

Veja o exemplo para CPropertyPage::OnOK.

CPropertyPage::OnCancel

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

virtual void OnCancel();

Observações

Substitua esta função de membro para realizar ações do botão Cancelar . O padrão anula quaisquer alterações que tenham sido feitas.

Example

// 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

Esta função membro é chamada pelo framework quando a página já não é a página ativa.

virtual BOOL OnKillActive();

Valor de retorno

Diferente de zero se os dados forem atualizados com sucesso, caso contrário 0.

Observações

Substitua esta função membro para realizar tarefas especiais de validação de dados.

A implementação padrão desta função membro copia as definições dos controlos na página de propriedades para as variáveis membro da página de propriedades. Se os dados não foram atualizados com sucesso devido a um erro de validação de dados de diálogo (DDV), a página mantém o foco.

Depois de esta função membro regressar com sucesso, o framework chamará a função da OnOK página.

Example

// 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

Esta função membro é chamada pelo framework quando o utilizador escolhe o botão OK ou o botão Aplicar Agora , imediatamente após o framework chamar OnKillActive.

virtual void OnOK();

Observações

Quando o utilizador escolhe o botão OK ou o botão Aplicar Agora , o framework recebe a PSN_APPLY notificação da página de propriedades. A chamada OnOK para não será feita se ligares CPropertySheet::PressButton porque, nesse caso, a página da propriedade não envia a notificação.

Substitua esta função de membro para implementar comportamentos adicionais específicos da página atualmente ativa quando o utilizador desligar toda a folha de propriedades.

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

Example

// 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

Esta função membro é chamada pelo framework quando o utilizador seleciona o botão Cancelar e antes de a ação de cancelar ter ocorrido.

virtual BOOL OnQueryCancel();

Valor de retorno

Retorna FALSE para impedir a operação de cancelamento ou TRUE para a permitir.

Observações

Substitua esta função membro para especificar uma ação que o programa realiza quando o utilizador seleciona o botão Cancelar .

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

Example

// 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

Esta função membro é chamada pelo framework quando o utilizador escolhe o botão Cancelar .

virtual void OnReset();

Observações

Quando o framework chama esta função, alterações a todas as páginas de propriedades feitas pelo utilizador que escolheu anteriormente o botão Aplicar Agora são descartadas, e a folha de propriedades mantém o foco.

Substitua esta função membro para especificar que ação o programa realiza quando o utilizador seleciona o botão Cancelar .

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

Example

Veja o exemplo para CPropertyPage::OnCancel.

CPropertyPage::OnSetActive

Esta função membro é chamada pelo framework quando a página é escolhida pelo utilizador e se torna a página ativa.

virtual BOOL OnSetActive();

Valor de retorno

Diferente de zero se a página foi ativada com sucesso; caso contrário, 0.

Observações

Substitua esta função membro para executar tarefas quando uma página é ativada. A sua substituição desta função membro normalmente chamaria a versão padrão após atualizar os membros dos dados, para permitir que esta atualize os controlos da página com os novos dados.

A implementação padrão cria a janela para a página, se não for criada anteriormente, e torna-a a página ativa.

Example

Veja o exemplo para CPropertySheet::SetFinishText.

CPropertyPage::OnWizardBack

Esta função membro é chamada pelo framework quando o utilizador seleciona o botão Voltar num assistente.

virtual LRESULT OnWizardBack();

Valor de retorno

0 para avançar automaticamente para a página seguinte; -1 para evitar que a página mude. Para saltar para uma página diferente da seguinte, devolve o identificador do diálogo a ser exibido.

Observações

Substitua esta função membro para especificar alguma ação que o utilizador deve realizar quando o botão Voltar é pressionado.

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

Example

// 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

Esta função membro é chamada pelo framework quando o utilizador seleciona o botão Terminar num assistente.

virtual BOOL OnWizardFinish();

Valor de retorno

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

Observações

Quando um utilizador seleciona o botão Terminar num assistente, o framework chama esta função; Quando OnWizardFinish retorna TRUE (um valor diferente de zero), a folha de propriedades pode ser destruída (mas na verdade não é destruída). Ligue DestroyWindow para destruir a ficha de propriedades. Não ligues DestroyWindow de OnWizardFinish; fazê-lo causará corrupção do heap ou outros erros.

Pode sobrescrever esta função membro para especificar alguma ação que o utilizador deve realizar quando o botão Terminar é pressionado. Ao sobrescrever esta função, regresse FALSE para evitar que a folha de propriedades seja destruída.

Para mais informações sobre mensagens de notificação enviadas quando o utilizador pressiona o botão Terminar numa folha de propriedades do assistente, consulte PSN_WIZFINISH o SDK do Windows.

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

Example

// 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

Esta função membro é chamada pelo framework quando o utilizador seleciona o botão Next num assistente.

virtual LRESULT OnWizardNext();

Valor de retorno

0 para avançar automaticamente para a página seguinte; -1 para evitar que a página mude. Para saltar para uma página diferente da seguinte, devolve o identificador do diálogo a ser exibido.

Observações

Substitua esta função membro para especificar alguma ação que o utilizador deve realizar quando o botão Seguinte é pressionado.

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

Example

// 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 esta função membro para encaminhar uma mensagem para cada página da folha de proprietários.

LRESULT QuerySiblings(
    WPARAM wParam,
    LPARAM lParam);

Parâmetros

wParam
Especifica informação adicional dependente da mensagem.

lParam
Especifica informação adicional dependente da mensagem

Valor de retorno

O valor não nulo de uma página na folha de propriedades, ou 0 se todas as páginas devolverem um valor de 0.

Observações

Se uma página devolver um valor diferente de zero, a folha de propriedades não envia a mensagem para as páginas seguintes.

Example

// 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 esta função membro para ativar ou desativar o botão Aplicar Agora , dependendo se as definições na página de propriedades devem ser aplicadas ao objeto externo apropriado.

void SetModified(BOOL bChanged = TRUE);

Parâmetros

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

Observações

O framework acompanha quais as páginas "sujas", ou seja, páginas de propriedades para as quais chamou SetModified( TRUE ). O botão Candidatar-se Agora estará sempre ativado se ligar SetModified( TRUE ) para uma das páginas. O botão Candidatar-se Agora será desativado quando chamar SetModified( FALSE ) uma das páginas, mas apenas se nenhuma das outras páginas estiver "suja".

Example

// 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);
}

Consulte também

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