Sdílet prostřednictvím


CPropertySheet Třída

Představuje seznamy vlastností, označované také jako dialogová okna karet.

Syntaxe

class CPropertySheet : public CWnd

Členové

Veřejné konstruktory

Název Popis
CPropertySheet::CPropertySheet CPropertySheet Vytvoří objekt.

Veřejné metody

Název Popis
CPropertySheet::AddPage Přidá stránku do seznamu vlastností.
CPropertySheet::Construct CPropertySheet Vytvoří objekt.
CPropertySheet::Create Zobrazí seznam bez moderování vlastností.
CPropertySheet::DoModal Zobrazí seznam modálních vlastností.
CPropertySheet::EnableStackedTabs Určuje, zda seznam vlastností používá skládané nebo posuvné karty.
CPropertySheet::EndDialog Ukončí seznam vlastností.
CPropertySheet::GetActiveIndex Načte index aktivní stránky seznamu vlastností.
CPropertySheet::GetActivePage Vrátí aktivní objekt stránky.
CPropertySheet::GetPage Načte ukazatel na zadanou stránku.
CPropertySheet::GetPageCount Načte počet stránek v seznamu vlastností.
CPropertySheet::GetPageIndex Načte index zadané stránky seznamu vlastností.
CPropertySheet::GetTabControl Načte ukazatel na ovládací prvek tabulátoru.
CPropertySheet::MapDialogRect Převede jednotky dialogového okna obdélníku na jednotky obrazovky.
CPropertySheet::OnInitDialog Přepsání pro inicializaci seznamu vlastností
CPropertySheet::PressButton Simuluje výběr zadaného tlačítka v seznamu vlastností.
CPropertySheet::RemovePage Odebere stránku ze seznamu vlastností.
CPropertySheet::SetActivePage Programově nastaví aktivní objekt stránky.
CPropertySheet::SetFinishText Nastaví text tlačítka Dokončit.
CPropertySheet::SetTitle Nastaví titulek seznamu vlastností.
CPropertySheet::SetWizardButtons Povolí tlačítka průvodce.
CPropertySheet::SetWizardMode Povolí režim průvodce.

Veřejné datové členy

Název Popis
CPropertySheet::m_psh Struktura Windows PROPSHEETHEADER . Poskytuje přístup k základním parametrům seznamu vlastností.

Poznámky

Seznam vlastností se skládá z objektu CPropertySheet a jednoho nebo více CPropertyPage objektů. Tato architektura zobrazí seznam vlastností jako okno se sadou indexů tabulátoru a oblastí, která obsahuje aktuálně vybranou stránku. Uživatel přejde na konkrétní stránku pomocí příslušné karty.

CPropertySheetposkytuje podporu rozšířené PROPSHEETHEADER struktury zavedené v systémech Windows 98 a systém Windows NT 2000. Struktura obsahuje další příznaky a členy, které podporují použití rastrového obrázku na pozadí "vodoznaku".

Chcete-li tyto nové obrázky automaticky zobrazit v objektu seznamu vlastností, předejte platné hodnoty pro rastrové obrázky a obrázky palety ve volání nebo CPropertySheet::Construct CPropertySheet::CPropertySheet.

I když CPropertySheet se neodvozuje z CDialogobjektu , správa objektu CPropertySheet se podobá správě objektu CDialog . Například vytvoření seznamu vlastností vyžaduje dvoudílnou konstrukci: volání konstruktoru a následné volání DoModal modálního seznamu vlastností nebo Create seznamu bez moderovaných vlastností. CPropertySheet má dva typy konstruktorů: CPropertySheet::Construct a CPropertySheet::CPropertySheet.

Při vytváření objektu CPropertySheet mohou některé styly oken způsobit první náhodnou výjimku. Výsledkem je, že se systém snaží změnit styl seznamu vlastností před vytvořením listu. Pokud se chcete této výjimce vyhnout, ujistěte se, že při vytváření CPropertySheetaplikace nastavíte následující styly:

  • DS_3DLOOK

  • DS_CONTROL

  • WS_CHILD

  • WS_TABSTOP

Následující styly jsou volitelné a nezpůsobí první náhodnou výjimku:

  • DS_SHELLFONT

  • DS_LOCALEDIT

  • WS_CLIPCHILDREN

Všechny ostatní Window Styles jsou zakázané a neměli byste je povolit.

Výměna dat mezi objektem CPropertySheet a externím objektem se podobá výměně dat s objektem CDialog . Důležitým rozdílem je, že nastavení seznamu vlastností jsou obvykle členské proměnné CPropertyPage objektů, nikoli samotného objektu CPropertySheet .

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í obsahuje dialogové okno karta Typ průvodce tlačítko Zpět, tlačítko Další nebo Dokončit, tlačítko Zrušit a tlačítko Nápověda.

Chcete-li vytvořit dialogové okno typu průvodce, postupujte podle stejných kroků jako při vytvoření standardního seznamu vlastností, ale volání SetWizardMode před voláním DoModal. Pokud chcete povolit tlačítka průvodce, zavolejte SetWizardButtonspomocí příznaků přizpůsobit jejich funkci a vzhled. Tlačítko Dokončit povolíte tak, že zavoláteSetFinishText, až uživatel provede akci na poslední stránce průvodce.

Další informace o tom, jak používat CPropertySheet objekty, naleznete v článku Seznamy vlastností a stránky vlastností.

Hierarchie dědičnosti

CObject

CCmdTarget

CWnd

CPropertySheet

Požadavky

Záhlaví: afxdlgs.h

CPropertySheet::AddPage

Přidá zadanou stránku se ouško nejvíce vpravo v seznamu vlastností.

void AddPage(CPropertyPage* pPage);

Parametry

pPage
Odkazuje na stránku, která se má přidat do seznamu vlastností. Nemůže být NULL.

Poznámky

Přidejte stránky do seznamu vlastností v pořadí zleva doprava, které chcete, aby se zobrazily.

AddPageCPropertyPage přidá objekt do CPropertySheet seznamu stránek objektu, ale ve skutečnosti nevytvoří okno pro stránku. Architektura odloží vytvoření okna pro stránku, dokud uživatel tuto stránku nevybere.

Když přidáte stránku vlastností pomocí AddPage, CPropertySheet je nadřazený objekt CPropertyPage. Chcete-li získat přístup k seznamu vlastností ze stránky vlastností, zavolejte CWnd::GetParent.

Není nutné čekat na vytvoření okna seznamu vlastností volat AddPage. Obvykle budete volat AddPage před voláním DoModal nebo Create.

Pokud zavoláte AddPage po zobrazení stránky vlastností, řádek karty bude odrážet nově přidanou stránku.

Příklad

// Add three pages to a CPropertySheet object, then show the 
// CPropertySheet object as a modal dialog.  CStylePage, CShapePage,  
// and CColorPage are CPropertyPage-derived classes created 
// by the Add Class wizard.  

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

CStylePage     stylePage;
CColorPage     colorPage;
CShapePage     shapePage;
dlgPropertySheet.AddPage(&stylePage);
dlgPropertySheet.AddPage(&colorPage);
dlgPropertySheet.AddPage(&shapePage);

dlgPropertySheet.DoModal();

CPropertySheet::Construct

CPropertySheet Vytvoří objekt.

void Construct(
    UINT nIDCaption,
    CWnd* pParentWnd = NULL,
    UINT iSelectPage = 0);

void Construct(
    LPCTSTR pszCaption,
    CWnd* pParentWnd = NULL,
    UINT iSelectPage = 0);

void Construct(
    UINT nIDCaption,
    CWnd* pParentWnd,
    UINT iSelectPage,
    HBITMAP hbmWatermark,
    HPALETTE hpalWatermark = NULL,
    HBITMAP hbmHeader = NULL);

void Construct(
    LPCTSTR pszCaption,
    CWnd* pParentWnd,
    UINT iSelectPage,
    HBITMAP hbmWatermark,
    HPALETTE hpalWatermark = NULL,
    HBITMAP hbmHeader = NULL);

Parametry

nIDCaption
ID titulku, který se má použít pro seznam vlastností.

pParentWnd
Ukazatel na nadřazené okno seznamu vlastností Pokud NULL, nadřazené okno bude hlavním oknem aplikace.

iSelectPage
Index stránky, která bude zpočátku nahoře. Výchozí hodnota je první stránka přidaná na list.

pszCaption
Ukazatel na řetězec obsahující titulek, který se má použít pro seznam vlastností. Nemůže být NULL.

hbmWatermark
Úchyt pro rastrový obrázek vodoznaku stránky vlastností

hpalWatermark
Úchyt pro paletu rastrového obrázku vodoznaku nebo rastrového obrázku záhlaví

hbmHeader
Popisovač rastrového obrázku záhlaví stránky vlastností

Poznámky

Volání této členské funkce, pokud jeden z konstruktorů třídy ještě nebyl volána. Volání například při Construct deklaraci nebo přidělení polí CPropertySheet objektů. V případě polí je nutné volat Construct pro každého člena v matici.

Zobrazení seznamu vlastností, volání DoModal nebo Create. Řetězec obsažený v prvním parametru se umístí do řádku titulků pro seznam vlastností.

Obrázky vodoznaku nebo záhlaví můžete zobrazit automaticky, pokud použijete třetí nebo čtvrtý prototyp výše uvedených prototypů Constructa předáte platné hodnoty pro hbmWatermarkparametry , hpalWatermarka/nebo parametry hbmHeader .

Příklad

Následující příklad ukazuje, za jakých okolností byste volali Construct.

const int c_cSheets = 3;
CPropertySheet   grpropsheet[c_cSheets];
// no need to call Construct for this next one
CPropertySheet   someSheet(_T("Some sheet"));

LPTSTR rgszSheets[c_cSheets] = {
   _T("Sheet 1"),
   _T("Sheet 2"),
   _T("Sheet 3")
};

for (int i = 0; i < c_cSheets; i++)
   grpropsheet[i].Construct(rgszSheets[i]);

CPropertySheet::CPropertySheet

CPropertySheet Vytvoří objekt.

CPropertySheet();

explicit CPropertySheet(
    UINT nIDCaption,
    CWnd* pParentWnd = NULL,
    UINT iSelectPage = 0);

explicit CPropertySheet(
    LPCTSTR pszCaption,
    CWnd* pParentWnd = NULL,
    UINT iSelectPage = 0);

CPropertySheet(
    UINT nIDCaption,
    CWnd* pParentWnd,
    UINT iSelectPage,
    HBITMAP hbmWatermark,
    HPALETTE hpalWatermark = NULL,
    HBITMAP hbmHeader = NULL);

CPropertySheet(
    LPCTSTR pszCaption,
    CWnd* pParentWnd,
    UINT iSelectPage,
    HBITMAP hbmWatermark,
    HPALETTE hpalWatermark = NULL,
    HBITMAP hbmHeader = NULL);

Parametry

nIDCaption
ID titulku, který se má použít pro seznam vlastností.

pParentWnd
Odkazuje na nadřazené okno seznamu vlastností. Pokud NULL, nadřazené okno bude hlavním oknem aplikace.

iSelectPage
Index stránky, která bude zpočátku nahoře. Výchozí hodnota je první stránka přidaná na list.

pszCaption
Odkazuje na řetězec obsahující titulek, který se má použít pro seznam vlastností. Nemůže být NULL.

hbmWatermark
Úchyt na rastrový obrázek pozadí listu vlastností.

hpalWatermark
Úchyt pro paletu rastrového obrázku vodoznaku nebo rastrového obrázku záhlaví.

hbmHeader
Popisovač rastrového obrázku záhlaví stránky vlastností.

Poznámky

Zobrazení seznamu vlastností, volání DoModal nebo Create. Řetězec obsažený v prvním parametru se umístí do řádku titulků pro seznam vlastností.

Pokud máte více parametrů (například pokud používáte pole), použijte Construct místo CPropertySheet.

Vodoznak a/nebo obrázky záhlaví můžete automaticky zobrazit, pokud použijete třetí nebo čtvrtý prototyp CPropertySheetvýše a předáte platné hodnoty pro hbmWatermarkparametry , hpalWatermarka/nebo hbmHeader parametry.

Příklad

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

// Declare a CPropertySheet object whose title is specified in the
// IDS_PROPERTYSHEET_TITLE string resource, and the second page is
// initially on top.  
CPropertySheet dlgPropertySheet2(IDS_PROPERTYSHEET_TITLE, this, 1);

CPropertySheet::Create

Zobrazí seznam bez moderování vlastností.

virtual BOOL Create(CWnd* pParentWnd = NULL,
    DWORD dwStyle = (DWORD)-1,
    DWORD dwExStyle = 0);

Parametry

pParentWnd
Odkazuje na nadřazené okno. Pokud NULLje nadřazený počítač.

dwStyle
Styly oken pro seznam vlastností Úplný seznam dostupných stylů najdete v tématu Styly oken.

dwExStyle
Rozšířené styly oken pro seznam vlastností Úplný seznam dostupných stylů najdete v tématu Rozšířené styly oken.

Návratová hodnota

Nenulové, pokud je seznam vlastností úspěšně vytvořen; jinak 0.

Poznámky

Volání Create může být uvnitř konstruktoru nebo ho můžete volat po vyvolání konstruktoru.

Výchozí styl vyjádřený předáním -1 jako dwStyle, je ve skutečnosti WS_SYSMENU|WS_POPUP|WS_CAPTION|DS_MODALFRAME|DS_CONTEXTHELP|WS_VISIBLE. Výchozí rozšířený styl okna vyjádřený předáním hodnoty 0 jako dwExStyle, je ve skutečnosti WS_EX_DLGMODALFRAME.

Členová Create funkce se vrátí okamžitě po vytvoření seznamu vlastností. Chcete-li zničit seznam vlastností, zavolejte CWnd::DestroyWindow.

Seznamy vlastností bez režimu zobrazené s voláním Create nemají tlačítka OK, Zrušit, Použít nyní a Nápověda jako modální seznamy vlastností. Požadovaná tlačítka musí vytvořit uživatel.

Chcete-li zobrazit modální seznam vlastností, místo toho zavolejte DoModal .

Příklad

// This code fragment shows how to create a modeless property sheet 
// dialog in a command message handler (OnModelessPropertySheet()) 
// of a CView-derived class.
void CPSheetView::OnModelessPropertySheet()
{
   // Declare a CPropertySheet object.  m_pdlgPropertySheet is a data
   // member of type CPropertySheet in CView-derived class.
   m_pdlgPropertySheet = new CPropertySheet(_T("Simple PropertySheet"));
   ASSERT(m_pdlgPropertySheet);

   // Add three pages to the CPropertySheet object.  Both m_pstylePage, 
   // m_pcolorPage, and m_pshapePage are data members of type 
   // CPropertyPage-derived classes in CView-derived class.
   m_pstylePage = new CStylePage;
   m_pcolorPage = new CColorPage;
   m_pshapePage = new CShapePage;
   m_pdlgPropertySheet->AddPage(m_pstylePage);
   m_pdlgPropertySheet->AddPage(m_pcolorPage);
   m_pdlgPropertySheet->AddPage(m_pshapePage);

   // Create a modeless CPropertySheet dialog.
   m_pdlgPropertySheet->Create();
}

 

// The code fragment below shows how to destroy the C++ objects for
// propertysheet and propertypage in the destructor of CView-derived
// class.
// NOTE:  DestroyWindow() is called in CPropertySheet::OnClose() so
// you do not need to call it here.  Property pages are children
// of the CPropertySheet, they will be destroyed by their parents.
CPSheetView::~CPSheetView()
{
   delete m_pshapePage;
   delete m_pstylePage;
   delete m_pcolorPage;
   delete m_pdlgPropertySheet;
}

CPropertySheet::DoModal

Zobrazí seznam modálních vlastností.

virtual INT_PTR DoModal();

Návratová hodnota

IDOK nebo IDCANCEL pokud byla funkce úspěšná; jinak 0 nebo -1. Pokud byl seznam vlastností vytvořen jako průvodce (viz SetWizardMode), DoModal vrátí buď ID_WIZFINISH nebo IDCANCEL.

Poznámky

Vrácená hodnota odpovídá ID ovládacího prvku, který zavřel seznam vlastností. Po vrácení této funkce budou okna odpovídající seznamu vlastností a všechny stránky zničeny. Samotné objekty budou stále existovat. Obvykle načtete data z CPropertyPage objektů po DoModal vrácení IDOK.

Pokud chcete zobrazit seznam vlastností bez režimu, zavolejte Create místo toho.

Při vytvoření stránky vlastností z odpovídajícího prostředku dialogového okna může dojít k první náhodné výjimce. Výsledkem je změna stylu prostředku dialogového okna na požadovaný styl před vytvořením stránky. Vzhledem k tomu, že prostředky jsou obecně jen pro čtení, způsobí to výjimku. Systém zpracuje výjimku a vytvoří kopii upraveného prostředku. První náhodná výjimka je proto možné ignorovat.

Poznámka:

Tato výjimka musí být zpracována operačním systémem, pokud kompilujete s asynchronním modelem zpracování výjimek. Další informace o modelech zpracování výjimek najdete v tématu /EH (Model zpracování výjimek). V tomto případě nezalamujte volání CPropertySheet::DoModal s blokem try-catch jazyka C++, ve kterém catch zpracovává všechny výjimky, catch (...)například . Tento blok zpracuje výjimku určenou pro operační systém a způsobí nepředvídatelné chování. Můžete však bezpečně použít zpracování výjimek C++ s konkrétními typy výjimek nebo strukturovaným zpracováním výjimek, kde je výjimka porušení přístupu předána operačnímu systému.

Chcete-li se vyhnout generování této první náhody výjimky, můžete ručně zaručit, že seznam vlastností má správné styly oken. Pro seznam vlastností musíte nastavit následující styly:

  • DS_3DLOOK

  • DS_CONTROL

  • WS_CHILD

  • WS_TABSTOP

Můžete použít následující volitelné styly, aniž by to způsobilo výjimku první šance:

  • DS_SHELLFONT

  • DS_LOCALEDIT

  • WS_CLIPCHILDREN

Zakažte všechny ostatní styly Windows, protože nejsou kompatibilní s seznamy vlastností. Tato rada se nevztahuje na rozšířené styly. Nastavení těchto standardních stylů odpovídajícím způsobem zaručuje, že seznam vlastností nemusí být změněn a nebude se generovat první náhodná výjimka.

Příklad

Podívejte se na příklad pro CPropertySheet::AddPage.

CPropertySheet::EnableStackedTabs

Určuje, zda se mají naskládat řádky oušek v seznamu vlastností.

void EnableStackedTabs(BOOL bStacked);

Parametry

bStacked
Určuje, jestli jsou v seznamu vlastností povolené skládané ouška. Zakažte skládané řádky značek nastavením bStacked na FALSE.

Poznámky

Pokud má seznam vlastností ve výchozím nastavení více oušek, než se vejde do jednoho řádku v šířce seznamu vlastností, ouška se naskládají do více řádků. Chcete-li místo skládaných karet použít posuvníky, zavolejte EnableStackedTabs před voláním DoModal bStacked FALSE nebo .Create

Při vytváření modálního nebo bezmodálního seznamu vlastností je nutné volat EnableStackedTabs . Chcete-li tento styl začlenit do -odvozené CPropertySheettřídy, napište obslužnou rutinu zprávy pro WM_CREATE. V přepsáné verzi CWnd::OnCreatevolání , EnableStackedTabs( FALSE ) před voláním implementace základní třídy.

Příklad

int CMyPropertySheet::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
   // Set for Scrolling Tabs style
   EnableStackedTabs(FALSE);
   // Call the base class
   if (CPropertySheet::OnCreate(lpCreateStruct) == -1)
      return -1;

   return 0;
}

CPropertySheet::EndDialog

Ukončí seznam vlastností.

void EndDialog(int nEndID);

Parametry

nEndID
Identifikátor, který se má použít jako návratová hodnota seznamu vlastností.

Poznámky

Tato členová funkce je volána rozhraním, když je stisknuto tlačítko OK, Zrušit nebo Zavřít. Volání této členské funkce, pokud dojde k události, která by měla zavřít seznam vlastností.

Tato členová funkce se používá pouze s modálním dialogovým oknem.

Příklad

Podívejte se na příklad pro CPropertySheet::PressButton.

CPropertySheet::GetActiveIndex

Získá číslo indexu aktivní stránky okna seznamu vlastností a pak použije vrácené číslo indexu jako parametr pro GetPage.

int GetActiveIndex() const;

Návratová hodnota

Číslo indexu aktivní stránky.

Příklad

Podívejte se na příklad pro CPropertySheet::GetActivePage.

CPropertySheet::GetActivePage

Načte aktivní stránku okna seznamu vlastností.

CPropertyPage* GetActivePage() const;

Návratová hodnota

Ukazatel na aktivní stránku.

Poznámky

Pomocí této členské funkce můžete provést nějakou akci na aktivní stránce.

Příklad

// The code fragment below sets the last active page (i.e. the 
// active page when the propertysheet was closed) to be the first 
// visible page when the propertysheet is shown. The last active 
// page was saved in m_LastActivePage, (a member variable of 
// CDocument-derived class) when OK was selected from the 
// propertysheet. CMyPropertySheet is a CPropertySheet-derived class.
BOOL CMyPropertySheet::OnInitDialog()
{
   BOOL bResult = CPropertySheet::OnInitDialog();

   CMDIFrameWnd* pframe = (CMDIFrameWnd*)AfxGetMainWnd();
   CMDIChildWnd* pchild = pframe->MDIGetActive();
   CPSheetDoc* doc = (CPSheetDoc*)pchild->GetActiveDocument();
   SetActivePage(doc->m_LastActivePage);

   return bResult;
}

BOOL CMyPropertySheet::OnCommand(WPARAM wParam, LPARAM lParam)
{
   if (LOWORD(wParam) == IDOK)
   {
      CMDIFrameWnd* pframe = (CMDIFrameWnd*)AfxGetMainWnd();
      CMDIChildWnd* pchild = pframe->MDIGetActive();
      CPSheetDoc* doc = (CPSheetDoc*)pchild->GetActiveDocument();
      doc->m_LastActivePage = GetPageIndex(GetActivePage()); // or GetActiveIndex()
   }

   return CPropertySheet::OnCommand(wParam, lParam);
}

CPropertySheet::GetPage

Vrátí ukazatel na zadanou stránku v tomto seznamu vlastností.

CPropertyPage* GetPage(int nPage) const;

Parametry

nPage
Index požadované stránky počínaje číslem 0 Musí být v rozsahu od 0 do jedné menší než počet stránek v seznamu vlastností (včetně).

Návratová hodnota

Ukazatel na stránku odpovídající parametru nPage .

Příklad

Podívejte se na příklad pro CPropertyPage::OnWizardFinish.

CPropertySheet::GetPageCount

Určuje počet stránek aktuálně v seznamu vlastností.

int GetPageCount() const;

Návratová hodnota

Počet stránek v seznamu vlastností

Příklad

Podívejte se na příklad pro CPropertyPage::OnWizardFinish.

CPropertySheet::GetPageIndex

Načte číslo indexu zadané stránky v seznamu vlastností.

int GetPageIndex(CPropertyPage* pPage);

Parametry

pPage
Odkazuje na stránku s indexem, který se má najít. Nemůže být NULL.

Návratová hodnota

Číslo indexu stránky.

Poznámky

Například byste použili GetPageIndex k získání indexu stránky, aby bylo možné použít SetActivePage nebo GetPage.

Příklad

Podívejte se na příklad pro CPropertySheet::GetActivePage.

CPropertySheet::GetTabControl

Načte ukazatel na ovládací prvek tab, který provede něco specifického pro ovládací prvek tab (to znamená pro použití některého z rozhraní API).CTabCtrl

CTabCtrl* GetTabControl() const;

Návratová hodnota

Ukazatel na ovládací prvek tabulátoru.

Poznámky

Tuto členovou funkci můžete například volat, pokud chcete při inicializaci přidat rastrové obrázky na každou z karet.

Příklad

// Create and associate a tooltip control to the tab control of 
// CMyTTPropertySheet.  CMyTTPropertySheet is a CPropertySheet-derived
// class.
BOOL CMyTTPropertySheet::OnInitDialog()
{
   BOOL bResult = CPropertySheet::OnInitDialog();

   // Create a tooltip control.  m_pToolTipCtrl is a member variable
   // of type CToolTipCtrl* in CMyTTPropertySheet class.  It is 
   // initialized to NULL in the constructor, and destroyed in the 
   // destructor of CMyTTPropertySheet class.
   m_pToolTipCtrl = new CToolTipCtrl;
   if (!m_pToolTipCtrl->Create(this))
   {
      TRACE(_T("Unable To create ToolTip\n"));
      return bResult;
   }

   // Associate the tooltip control to the tab control
   // of CMyPropertySheet.
   CTabCtrl* ptab = GetTabControl();
   ptab->SetToolTips(m_pToolTipCtrl);

   // Get the bounding rectangle of each tab in the tab control of the
   // property sheet. Use this rectangle when registering a tool with 
   // the tool tip control.  IDS_FIRST_TOOLTIP is the first ID string 
   // resource that contains the text for the tool.
   int count = ptab->GetItemCount();
   int id = IDS_FIRST_TOOLTIP;
   for (int i = 0; i < count; i++)
   {
      CRect r;
      ptab->GetItemRect(i, &r);
      VERIFY(m_pToolTipCtrl->AddTool(ptab, id, &r, id));
      id++;
   }

   // Activate the tooltip control.
   m_pToolTipCtrl->Activate(TRUE);

   return bResult;
}

// Override PreTranslateMessage() so RelayEvent() can be 
// called to pass a mouse message to CMyTTPropertySheet's 
// tooltip control for processing.
BOOL CMyTTPropertySheet::PreTranslateMessage(MSG* pMsg)
{
   if (NULL != m_pToolTipCtrl)
      m_pToolTipCtrl->RelayEvent(pMsg);

   return CPropertySheet::PreTranslateMessage(pMsg);
}

CPropertySheet::m_psh

Struktura, jejíž členy ukládají vlastnosti PROPSHEETHEADER.

Poznámky

Tato struktura slouží k inicializaci vzhledu seznamu vlastností po jeho vytvoření, ale před zobrazením pomocí DoModal členské funkce. Můžete například nastavit dwSize člena m_psh na velikost, kterou má mít seznam vlastností.

Další informace o této struktuře, včetně výpisu jejích členů, najdete PROPSHEETHEADER v sadě Windows SDK.

Příklad

// This code fragment shows how to change CPropertySheet's settings 
// before it is shown.  After the changes, CPropertySheet has the 
// caption "Simple Properties", no "Apply" button, and the 
// second page (CColorPage) initially on top.  

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

CStylePage stylePage;
CColorPage colorPage;
CShapePage shapePage;
dlgPropertySheet.AddPage(&stylePage);
dlgPropertySheet.AddPage(&colorPage);
dlgPropertySheet.AddPage(&shapePage);

dlgPropertySheet.m_psh.dwFlags |= PSH_NOAPPLYNOW | PSH_PROPTITLE;
dlgPropertySheet.m_psh.pszCaption = _T("Simple");
dlgPropertySheet.m_psh.nStartPage = 1;

dlgPropertySheet.DoModal();

CPropertySheet::MapDialogRect

Převede jednotky dialogového okna obdélníku na jednotky obrazovky.

void MapDialogRect(LPRECT lpRect) const;

Parametry

lpRect
Odkazuje na RECT strukturu nebo CRect objekt, který obsahuje souřadnice dialogového okna, které se mají převést.

Poznámky

Jednotky dialogového okna jsou uvedeny z aktuální základní jednotky dialogového okna odvozené z průměrné šířky a výšky znaků v písmu použitém pro text dialogového okna. Jedna vodorovná jednotka je jedna čtvrtá jednotka základní šířky dialogového okna a jedna svislá jednotka je jedna osmá z jednotky základní výšky dialogového okna.

GetDialogBaseUnits Funkce Windows vrátí informace o velikosti pro systémové písmo, ale pro každý seznam vlastností můžete zadat jiné písmo, pokud v souboru definice prostředku použijete styl DS_SETFONT. Funkce MapDialogRect Windows popsaná v sadě Windows SDK používá příslušné písmo pro toto dialogové okno.

Členová MapDialogRect funkce nahrazuje jednotky dialogového okna jednotkami lpRect obrazovky (pixely), aby bylo možné obdélník použít k vytvoření dialogového okna nebo umístění ovládacího prvku do pole.

CPropertySheet::OnInitDialog

Přepíše inicializaci seznamu vlastností.

virtual BOOL OnInitDialog();

Návratová hodnota

Určuje, zda aplikace nastavila vstupní fokus na jeden z ovládacích prvků v seznamu vlastností. Pokud OnInitDialog vrátí nenulové hodnoty, systém Windows nastaví vstupní fokus na první ovládací prvek v seznamu vlastností. Aplikace může vrátit hodnotu 0 pouze v případě, že explicitně nastavila vstupní fokus na jeden z ovládacích prvků v seznamu vlastností.

Poznámky

Tato členová funkce se volá v reakci na WM_INITDIALOG zprávu. Tato zpráva se odešle do seznamu vlastností během Create volání nebo DoModal volání, ke kterým dojde bezprostředně před zobrazením seznamu vlastností.

Tuto členovu funkci přepište, pokud potřebujete provést speciální zpracování při inicializaci seznamu vlastností. V přepsáné verzi nejprve zavolejte základní třídu OnInitDialog , ale ignorujte její návratovou hodnotu. Obvykle se vrátíte TRUE ze své přepsané členské funkce.

Pro tuto členovou funkci nepotřebujete položku mapy zpráv.

CPropertySheet::PressButton

Simuluje výběr zadaného tlačítka v seznamu vlastností.

void PressButton(int nButton);

Parametry

nButton
nButton : Identifikuje tlačítko, které se má stisknout. Tento parametr může být jedna z následujících hodnot:

  • PSBTN_BACK Vybere tlačítko Zpět.

  • PSBTN_NEXT Vybere tlačítko Další.

  • PSBTN_FINISH Vybere tlačítko Dokončit.

  • PSBTN_OK Vybere tlačítko OK.

  • PSBTN_APPLYNOW Vybere tlačítko Použít hned.

  • PSBTN_CANCEL Vybere tlačítko Storno.

  • PSBTN_HELP Vybere tlačítko Nápověda.

Poznámky

Další PSM_PRESSBUTTON informace o zprávě Windows SDK Pressbutton.

Volání PressButton neodesílá PSN_APPLY oznámení ze stránky vlastností do architektury. Chcete-li odeslat toto oznámení, zavolejte CPropertyPage::OnOK.

Příklad

// Simulate the selection of OK and Cancel buttons when Alt+K and
// Alt+C are pressed.  CMyPropertySheet is a CPropertySheet-derived 
// class.
BOOL CMyPropertySheet::PreTranslateMessage(MSG* pMsg)
{
   if (pMsg->message >= WM_KEYFIRST && pMsg->message <= WM_KEYLAST)
   {
      BOOL altkey = GetKeyState(VK_MENU) < 0;
      if (altkey)
      {
         BOOL handled = TRUE;
         switch (toupper((int)pMsg->wParam))
         {
         case 'C':                     // for Alt+C - Cancel button
            PressButton(PSBTN_CANCEL);   // or EndDialog(IDCANCEL);
            break;

         case 'K':                     // for Alt+K - OK button
            PressButton(PSBTN_OK);      // or EndDialog(IDOK);
            break;

         default:
            handled = FALSE;
         }

         if (handled)
            return TRUE;
      }
   }

   return CPropertySheet::PreTranslateMessage(pMsg);
}

CPropertySheet::RemovePage

Odebere stránku z seznamu vlastností a zničí přidružené okno.

void RemovePage(CPropertyPage* pPage);
void RemovePage(int nPage);

Parametry

pPage
Odkazuje na stránku, která se má odebrat z seznamu vlastností. Nemůže být NULL.

nPage
Index stránky, která se má odebrat. Musí být v rozsahu od 0 do jedné menší než počet stránek v seznamu vlastností (včetně).

Poznámky

Samotný CPropertyPage objekt není zničen, dokud se vlastník CPropertySheet okna nezavře.

CPropertySheet::SetActivePage

Změní aktivní stránku.

BOOL SetActivePage(int nPage);
BOOL SetActivePage(CPropertyPage* pPage);

Parametry

nPage
Index stránky, která se má nastavit Musí být v rozsahu od 0 do jedné menší než počet stránek v seznamu vlastností (včetně).

pPage
Odkazuje na stránku, která se nastaví v seznamu vlastností. Nemůže to být NULL.

Návratová hodnota

Nenulové, pokud je seznam vlastností úspěšně aktivován; jinak 0.

Poznámky

Můžete například použít SetActivePage , pokud akce uživatele na jedné stránce by měla způsobit, že se jiná stránka stane aktivní stránkou.

Příklad

Podívejte se na příklad pro CPropertySheet::GetActivePage.

CPropertySheet::SetFinishText

Nastaví text na příkazovém tlačítku Dokončit.

void SetFinishText(LPCTSTR lpszText);

Parametry

lpszText
Odkazuje na text, který se má zobrazit na příkazovém tlačítku Dokončit.

Poznámky

Volání SetFinishText pro zobrazení textu na příkazovém tlačítku Dokončit a skrytí tlačítek Další a Zpět po dokončení akce uživatele na poslední stránce průvodce.

Příklad

// CShapePage is the last wizard property page. Enable the Back 
// button and change the Next button to Finish. The "Finish" button 
// will have "Done" as its caption.
BOOL CShapePage::OnSetActive()
{
   CPropertySheet* psheet = (CPropertySheet*)GetParent();
   psheet->SetWizardButtons(PSWIZB_BACK | PSWIZB_FINISH);
   psheet->SetFinishText(_T("Done"));

   return CPropertyPage::OnSetActive();
}

CPropertySheet::SetTitle

Určuje titulek seznamu vlastností (text zobrazený v záhlaví okna rámečku).

void SetTitle(
    LPCTSTR lpszText,
    UINT nStyle = 0);

Parametry

nStyle
Určuje styl názvu seznamu vlastností. Styl musí být zadán na 0 nebo jako PSH_PROPTITLE. Pokud je styl nastaven jako PSH_PROPTITLE, slovo "Vlastnosti" se zobrazí za textem zadaným jako titulek. Například volání SetTitle("Simple", PSH_PROPTITLE) způsobí titulek seznamu vlastností "Jednoduché vlastnosti".

lpszText
Odkazuje na text, který se má použít jako titulek v záhlaví seznamu vlastností.

Poznámky

Ve výchozím nastavení používá seznam vlastností parametr titulek v konstruktoru seznamu vlastností.

Příklad

// Declare a CPropertySheet object with a caption "Simple PropertySheet".
CPropertySheet dlgPropertySheet(_T("Simple PropertySheet"));

// Add three pages to the CPropertySheet object. CStylePage, CColorPage,
// and CShapePage are CPropertyPage-derived classes created
// by the Add Class wizard.
CStylePage     stylePage;
CColorPage     colorPage;
CShapePage     shapePage;
dlgPropertySheet.AddPage(&stylePage);
dlgPropertySheet.AddPage(&colorPage);
dlgPropertySheet.AddPage(&shapePage);

// Change the caption of the CPropertySheet object 
// from "Simple PropertySheet" to "Simple Properties".
dlgPropertySheet.SetTitle(_T("Simple"), PSH_PROPTITLE);

// Show the CPropertySheet object as MODAL.
dlgPropertySheet.DoModal();

CPropertySheet::SetWizardButtons

Povolí nebo zakáže tlačítko Zpět, Další nebo Dokončit v seznamu vlastností průvodce.

void SetWizardButtons(DWORD dwFlags);

Parametry

dwFlags
Sada příznaků, které přizpůsobují funkci a vzhled tlačítek průvodce. Tento parametr může být kombinací následujících hodnot:

  • PSWIZB_BACK Tlačítko Zpět

  • PSWIZB_NEXT Tlačítko Další

  • PSWIZB_FINISH Tlačítko Dokončit

  • PSWIZB_DISABLEDFINISH Zakázané tlačítko Dokončit

Poznámky

Hovor SetWizardButtons je otevřen až po otevření dialogového okna, nemůžete volat SetWizardButtons před voláním DoModal. Obvykle byste měli volat SetWizardButtons z CPropertyPage::OnSetActive.

Pokud chcete změnit text na tlačítku Dokončit nebo skrýt tlačítka Další a Zpět, jakmile uživatel dokončí průvodce, zavolejte SetFinishText. Všimněte si, že stejné tlačítko se sdílí pro dokončení a další. Tlačítko Dokončit nebo Další můžete zobrazit najednou, ale ne obojí.

Příklad

A CPropertySheet má tři stránky vlastností průvodce: CStylePage, CColorPagea CShapePage. Fragment kódu níže ukazuje, jak povolit a zakázat tlačítka Zpět a Další na stránce vlastností průvodce.

// CStylePage is the first wizard property page.  Disable the Back 
// button but enable the Next button.
BOOL CStylePage::OnSetActive() 
{
   CPropertySheet* psheet = (CPropertySheet*) GetParent();   
   psheet->SetWizardButtons(PSWIZB_NEXT);
   
   return CPropertyPage::OnSetActive();
}

 

// CColorPage is the second wizard property page. Enable both the 
// Back button and the Next button.
BOOL CColorPage::OnSetActive()
{
   CPropertySheet* psheet = (CPropertySheet*)GetParent();
   psheet->SetWizardButtons(PSWIZB_BACK | PSWIZB_NEXT);

   return CPropertyPage::OnSetActive();
}

 

// CShapePage is the last wizard property page. Enable the Back 
// button and change the Next button to Finish. The "Finish" button 
// will have "Done" as its caption.
BOOL CShapePage::OnSetActive()
{
   CPropertySheet* psheet = (CPropertySheet*)GetParent();
   psheet->SetWizardButtons(PSWIZB_BACK | PSWIZB_FINISH);
   psheet->SetFinishText(_T("Done"));

   return CPropertyPage::OnSetActive();
}

CPropertySheet::SetWizardMode

Vytvoří stránku vlastností jako průvodce.

void SetWizardMode();

Poznámky

Klíčovou charakteristikou stránky vlastností průvodce je, že uživatel přejde pomocí tlačítek Další nebo Dokončit, Zpět a Zrušit místo karet.

Zavolejte SetWizardMode před voláním DoModal. Po volání SetWizardModeDoModal se vrátí buď ID_WIZFINISH (pokud se uživatel zavře pomocí tlačítka Dokončit) nebo IDCANCEL.

SetWizardModePSH_WIZARD nastaví příznak.

Příklad

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

CStylePage pageStyle;
CColorPage pageColor;
CShapePage pageShape;

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

sheet.SetWizardMode();

sheet.DoModal();

Viz také

Mfc – ukázka CMNCTRL1
Mfc – ukázka CMNCTRL2
Mfc – ukázka PROPDLG
Mfc – ukázka SNAPVW
CWnd Třída
Graf hierarchie