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
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
ouCreate
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
lpszTemplateName
Aponta 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
ouCreate
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