Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
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
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
DoModalde propriedades ouCreatefunçã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
DoModalde propriedades ouCreatefunçã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