CPropertyPage
Třída
Představuje jednotlivé stránky seznamu vlastností, jinak označované jako dialogové okno karty.
Syntaxe
class CPropertyPage : public CDialog
Členové
Veřejné konstruktory
Název | Popis |
---|---|
CPropertyPage::CPropertyPage |
CPropertyPage Vytvoří objekt. |
Veřejné metody
Název | Popis |
---|---|
CPropertyPage::CancelToClose |
Změní tlačítko OK na tlačítko Zavřít a zakáže tlačítko Zrušit po neopravitelné změně na stránce modální seznam vlastností. |
CPropertyPage::Construct |
CPropertyPage Vytvoří objekt. Použijte Construct , pokud chcete zadat parametry za běhu nebo pokud používáte pole. |
CPropertyPage::GetPSP |
Načte strukturu Windows PROPSHEETPAGE přidruženou k objektu CPropertyPage . |
CPropertyPage::OnApply |
Volá se rozhraním při kliknutí na tlačítko Použít nyní . |
CPropertyPage::OnCancel |
Volá se rozhraním při kliknutí na tlačítko Storno . |
CPropertyPage::OnKillActive |
Volá se rozhraním, pokud aktuální stránka již není aktivní stránkou. Tady proveďte ověření dat. |
CPropertyPage::OnOK |
Volá se rozhraním při kliknutí na tlačítko OK, Použít nyní nebo Zavřít . |
CPropertyPage::OnQueryCancel |
Volá se rozhraním při kliknutí na tlačítko Storno a před provedením zrušení. |
CPropertyPage::OnReset |
Volá se rozhraním při kliknutí na tlačítko Storno . |
CPropertyPage::OnSetActive |
Volá se rozhraním, když je stránka aktivní. |
CPropertyPage::OnWizardBack |
Volá se rozhraním při kliknutí na tlačítko Zpět při použití seznamu vlastností typu průvodce. |
CPropertyPage::OnWizardFinish |
Volá se rozhraním při kliknutí na tlačítko Dokončit při použití seznamu vlastností typu průvodce. |
CPropertyPage::OnWizardNext |
Volá se rozhraním při kliknutí na tlačítko Další při použití seznamu vlastností typu průvodce. |
CPropertyPage::QuerySiblings |
Přepošla zprávu na každou stránku seznamu vlastností. |
CPropertyPage::SetModified |
Volání pro aktivaci nebo deaktivaci tlačítka Použít nyní |
Veřejné datové členy
Název | Popis |
---|---|
CPropertyPage::m_psp |
Struktura Windows PROPSHEETPAGE . Poskytuje přístup k parametrům základní stránky vlastností. |
Poznámky
Stejně jako u standardních dialogových oken odvozujete třídu pro CPropertyPage
každou stránku v seznamu vlastností. Chcete-li použít CPropertyPage
-odvozené objekty, nejprve vytvořte CPropertySheet
objekt a pak vytvořte objekt pro každou stránku, která se nachází v seznamu vlastností. Volání CPropertySheet::AddPage
pro každou stránku v listu a zobrazení seznamu vlastností voláním CPropertySheet::DoModal
modálního seznamu vlastností nebo CPropertySheet::Create
seznamu bez moderování vlastností.
Můžete vytvořit typ dialogového okna s názvem průvodce, který se skládá z seznamu vlastností s posloupností stránek vlastností, které uživatele provedou jednotlivými kroky operace, například nastavením zařízení nebo vytvořením bulletinu. V dialogovém okně karty typu průvodce stránky vlastností nemají karty a najednou se zobrazí jenom jedna stránka vlastností. Místo tlačítek OK a Použít nyní má dialogové okno karta Typ průvodce tlačítko Zpět, tlačítko Další nebo Dokončit a tlačítko Zrušit.
Další informace o vytvoření seznamu vlastností jako průvodce naleznete v tématu CPropertySheet::SetWizardMode
. Další informace o používání CPropertyPage
objektů naleznete v článku Seznamy vlastností a stránky vlastností.
Hierarchie dědičnosti
CPropertyPage
Požadavky
Záhlaví: afxdlgs.h
CPropertyPage::CancelToClose
Volání této funkce po neopravitelné změně dat na stránce modálního seznamu vlastností.
void CancelToClose();
Poznámky
Tato funkce změní tlačítko OK na Tlačítko Zavřít a zakáže tlačítko Zrušit. Tato změna upozorní uživatele, že změna je trvalá a změny nelze zrušit.
Členová CancelToClose
funkce ve výchozím nastavení nemá v seznamu bezmodální vlastnosti nic, protože seznam bez moderování vlastností ve výchozím nastavení neobsahuje tlačítko Storno .
Příklad
Podívejte se na příklad pro CPropertyPage::QuerySiblings.
CPropertyPage::Construct
Voláním této členské funkce vytvoříte CPropertyPage
objekt.
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);
Parametry
nIDTemplate
ID šablony použité pro tuto stránku
nIDCaption
ID názvu, který se má umístit na kartu této stránky. Pokud 0, název bude převzat ze šablony dialogového okna pro tuto stránku.
lpszTemplateName
Obsahuje řetězec ukončený hodnotou null, který je názvem prostředku šablony.
nIDHeaderTitle
ID názvu, který se má umístit do umístění názvu záhlaví stránky vlastností. Ve výchozím nastavení 0.
nIDHeaderSubTitle
ID názvu, který se má umístit do umístění podnadpisu záhlaví stránky vlastností. Ve výchozím nastavení 0.
Poznámky
Objekt se zobrazí po splnění všech následujících podmínek:
Stránka byla přidána do seznamu vlastností pomocí .
CPropertySheet::AddPage
Uživatel tuto stránku vybral (na záložku).
Volání Construct
, pokud jeden z ostatních konstruktorů třídy nebyl volán. Členová Construct
funkce je flexibilní, protože příkaz parametru můžete ponechat prázdný a pak zadat více parametrů a konstrukce v libovolném bodě v kódu.
Musíte použít Construct
při práci s poli a musíte volat Construct
pro každého člena pole, aby datové členy byly přiřazeny správné hodnoty.
Příklad
// 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
CPropertyPage
Vytvoří objekt.
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));
Parametry
nIDTemplate
ID šablony použité pro tuto stránku
nIDCaption
ID názvu, který se má umístit na kartu této stránky. Pokud 0, název bude převzat ze šablony dialogového okna pro tuto stránku.
dwSize
lpszTemplateName
Odkazuje na řetězec obsahující název šablony pro tuto stránku. Nemůžu být NULL
.
nIDHeaderTitle
ID názvu, který se má umístit do umístění názvu záhlaví stránky vlastností.
nIDHeaderSubTitle
ID názvu, který se má umístit do umístění podnadpisu záhlaví stránky vlastností.
Poznámky
Objekt se zobrazí po splnění všech následujících podmínek:
Stránka byla přidána do seznamu vlastností pomocí .
CPropertySheet::AddPage
Uživatel tuto stránku vybral (na záložku).
Pokud máte více parametrů (například pokud používáte pole), použijte CPropertySheet::Construct
místo CPropertyPage
.
Příklad
// 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
Načte strukturu Windows PROPSHEETPAGE
přidruženou k objektu CPropertyPage
.
const PROPSHEETPAGE& GetPSP() const;
PROPSHEETPAGE& GetPSP();
Návratová hodnota
Odkaz na PROPSHEETPAGE
strukturu.
CPropertyPage::m_psp
m_psp
je struktura, jejíž členy ukládají charakteristiky PROPSHEETPAGE
.
PROPSHEETPAGE m_psp;
Poznámky
Tato struktura slouží k inicializaci vzhledu stránky vlastností po jeho vytvoření.
Další informace o této struktuře, včetně výpisu jejích členů, najdete PROPSHEETPAGE
v sadě Windows SDK.
Příklad
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
Tato členová funkce je volána rozhraním, když uživatel zvolí tlačítko OK nebo Použít nyní .
virtual BOOL OnApply();
Návratová hodnota
Nenulové, pokud jsou změny přijaty; jinak 0.
Poznámky
Když architektura volá tuto funkci, změny provedené na všech stránkách vlastností v seznamu vlastností jsou přijaty, list vlastností zachová fokus a OnApply
vrátí TRUE
(hodnota 1). Před OnApply
zavoláním rozhraní je nutné volat SetModified
a nastavit jeho parametr na TRUE
. Tím se aktivuje tlačítko Použít nyní , jakmile uživatel provede změnu na stránce vlastností.
Přepište tuto členovu funkci a určete, jakou akci program provede, když uživatel vybere tlačítko Použít nyní . Při přepsání by se funkce měla vrátit TRUE
, aby přijímala změny, a FALSE
aby se změny projevily.
Výchozí implementace OnApply
volání OnOK
.
Další informace o zprávách oznámení odeslaných, když uživatel stiskne tlačítko Použít nyní nebo OK v seznamu vlastností, naleznete PSN_APPLY
v sadě Windows SDK.
Příklad
Podívejte se na příklad pro CPropertyPage::OnOK.
CPropertyPage::OnCancel
Tato členová funkce je volána rozhraním při výběru tlačítka Zrušit .
virtual void OnCancel();
Poznámky
Chcete-li provést akce tlačítka Zrušit , přepište tuto členovu funkci. Výchozí neguje všechny provedené změny.
Příklad
// 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
Tato členová funkce je volána rozhraním, pokud stránka již není aktivní stránkou.
virtual BOOL OnKillActive();
Návratová hodnota
Nenulové, pokud byla data úspěšně aktualizována, jinak 0.
Poznámky
Přepište tuto členovu funkci tak, aby prováděla speciální úlohy ověření dat.
Výchozí implementace této členské funkce kopíruje nastavení z ovládacích prvků na stránce vlastností na členské proměnné stránky vlastností. Pokud se data neaktualizovala úspěšně kvůli chybě ověření dat dialogového okna (DDV), zachovají se fokus na stránce.
Po úspěšném vrácení této členské funkce bude architektura volat funkci stránky OnOK
.
Příklad
// 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
Tato členová funkce je volána rozhraním, když uživatel zvolí tlačítko OK nebo Použít nyní ihned po volání OnKillActive
rozhraní .
virtual void OnOK();
Poznámky
Když uživatel zvolí tlačítko OK nebo Použít nyní , architektura obdrží PSN_APPLY
oznámení ze stránky vlastností. Volání OnOK
nebude provedeno, pokud zavoláte CPropertySheet::PressButton
, protože stránka vlastností v takovém případě neodesílá oznámení.
Přepište tuto členovou funkci tak, aby implementovaly další chování specifické pro aktuálně aktivní stránku, když uživatel zavře celý seznam vlastností.
Výchozí implementace této členské funkce označuje stránku jako "čistou", aby odrážela, že data byla ve OnKillActive
funkci aktualizována.
Příklad
// 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
Tato členová funkce je volána rozhraním, když uživatel vybere tlačítko Zrušit a před provedením akce zrušení.
virtual BOOL OnQueryCancel();
Návratová hodnota
Vrátí, FALSE
aby se zabránilo operaci zrušení nebo TRUE
ji povolila.
Poznámky
Tuto členovou funkci přepište tak, aby určila akci, kterou program provede, když uživatel vybere tlačítko Zrušit .
Výchozí implementace návratů OnQueryCancel
TRUE
.
Příklad
// 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
Tato členová funkce je volána rozhraním, když uživatel zvolí tlačítko Zrušit .
virtual void OnReset();
Poznámky
Když architektura volá tuto funkci, změny všech stránek vlastností provedené uživatelem, které uživatel dříve zvolil tlačítko Použít nyní , se zahodí a list vlastností si zachová fokus.
Přepište tuto členovu funkci a určete, jakou akci program provede, když uživatel vybere tlačítko Zrušit .
Výchozí implementace OnReset
nic nedělá.
Příklad
Podívejte se na příklad pro CPropertyPage::OnCancel.
CPropertyPage::OnSetActive
Tato členová funkce je volána rozhraním při výběru stránky uživatelem a stane se aktivní stránkou.
virtual BOOL OnSetActive();
Návratová hodnota
Nenulové, pokud byla stránka úspěšně nastavena jako aktivní; jinak 0.
Poznámky
Tuto členovou funkci přepište, aby prováděla úkoly při aktivaci stránky. Přepsání této členské funkce obvykle volá výchozí verzi po aktualizaci datových členů, aby bylo možné aktualizovat ovládací prvky stránky novými daty.
Výchozí implementace vytvoří okno pro stránku, pokud ještě není vytvořeno, a nastaví ji jako aktivní stránku.
Příklad
Podívejte se na příklad pro CPropertySheet::SetFinishText.
CPropertyPage::OnWizardBack
Tato členová funkce je volána rozhraním, když uživatel vybere tlačítko Zpět v průvodci.
virtual LRESULT OnWizardBack();
Návratová hodnota
0 pro automatický přechod na další stránku; -1, aby se zabránilo změně stránky. Pokud chcete přejít na jinou stránku než na další, vraťte identifikátor dialogového okna, který se má zobrazit.
Poznámky
Přepsat tuto členovou funkci tak, aby určil, jakou akci musí uživatel provést, když je stisknuto tlačítko Zpět .
Další informace o tom, jak vytvořit seznam vlastností typu průvodce, naleznete v tématu CPropertySheet::SetWizardMode
.
Příklad
// 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
Tato členová funkce je volána rozhraním, když uživatel vybere tlačítko Dokončit v průvodci.
virtual BOOL OnWizardFinish();
Návratová hodnota
Nenulové, pokud je po dokončení průvodce zničen seznam vlastností; jinak nula.
Poznámky
Když uživatel vybere tlačítko Dokončit v průvodci, architektura zavolá tuto funkci; když OnWizardFinish
se vrátí TRUE
(nenulová hodnota), bude možné seznam vlastností zničit (ale ve skutečnosti není zničen). Volání DestroyWindow
k zničení seznamu vlastností Nezavolejte DestroyWindow
z OnWizardFinish
něj ; tím způsobí poškození haldy nebo jiné chyby.
Tuto členovou funkci můžete přepsat, aby bylo možné určit akci, kterou musí uživatel provést při stisknutí tlačítka Dokončit . Při přepsání této funkce se vraťte FALSE
, aby se zabránilo zničení seznamu vlastností.
Další informace o zprávách oznámení odeslaných po stisknutí tlačítka Dokončit v seznamu vlastností průvodce naleznete PSN_WIZFINISH
v sadě Windows SDK.
Další informace o tom, jak vytvořit seznam vlastností typu průvodce, naleznete v tématu CPropertySheet::SetWizardMode
.
Příklad
// 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
Tato členová funkce je volána rozhraním, když uživatel vybere tlačítko Další v průvodci.
virtual LRESULT OnWizardNext();
Návratová hodnota
0 pro automatický přechod na další stránku; -1, aby se zabránilo změně stránky. Pokud chcete přejít na jinou stránku než na další, vraťte identifikátor dialogového okna, který se má zobrazit.
Poznámky
Přepsat tuto členovou funkci, aby určil, jakou akci musí uživatel provést, když je stisknuto tlačítko Další .
Další informace o tom, jak vytvořit seznam vlastností typu průvodce, naleznete v tématu CPropertySheet::SetWizardMode
.
Příklad
// 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
Voláním této členské funkce přepošlejte zprávu na každou stránku v seznamu vlastností.
LRESULT QuerySiblings(
WPARAM wParam,
LPARAM lParam);
Parametry
wParam
Určuje další informace závislé na zprávách.
lParam
Určuje další informace závislé na zprávách.
Návratová hodnota
Nenulová hodnota ze stránky v seznamu vlastností nebo 0, pokud všechny stránky vrátí hodnotu 0.
Poznámky
Pokud stránka vrátí nenulovou hodnotu, seznam vlastností neodesílá zprávu na další stránky.
Příklad
// 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
Voláním této členské funkce povolíte nebo zakážete tlačítko Použít nyní na základě toho, jestli se má nastavení na stránce vlastností použít u příslušného externího objektu.
void SetModified(BOOL bChanged = TRUE);
Parametry
bChanged
TRUE
chcete-li označit, že nastavení stránky vlastností bylo změněno od posledního použití; FALSE
chcete-li označit, že nastavení stránky vlastností bylo použito nebo by mělo být ignorováno.
Poznámky
Architektura sleduje, které stránky jsou "špinavé", to znamená stránky vlastností, pro které jste volali SetModified( TRUE )
. Tlačítko Použít nyní bude vždy povoleno, pokud voláte SetModified( TRUE )
jednu ze stránek. Tlačítko Použít nyní bude při volání SetModified( FALSE )
jedné ze stránek zakázané, ale pouze v případě, že žádná z ostatních stránek není "špinavá".
Příklad
// 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);
}
Viz také
Mfc – ukázka CMNCTRL1
Mfc – ukázka CMNCTRL2
Mfc – ukázka PROPDLG
Mfc – ukázka SNAPVW
CDialog
Třída
Graf hierarchie
CPropertySheet
Třída