CPropertySheet-Klasse

Stellt Eigenschaftenblätter dar, auch als "Dialogfelder im Registerformat" bezeichnet.

Syntax

class CPropertySheet : public CWnd

Member

Öffentliche Konstruktoren

name Beschreibung
CPropertySheet::CPropertySheet Erstellt ein CPropertySheet-Objekt.

Öffentliche Methoden

name Beschreibung
CPropertySheet::AddPage Fügt dem Eigenschaftsblatt eine Seite hinzu.
CPropertySheet::Construct Erstellt ein CPropertySheet-Objekt.
CPropertySheet::Create Zeigt ein modusloses Eigenschaftenblatt an.
CPropertySheet::DoModal Zeigt ein modales Eigenschaftenblatt an.
CPropertySheet::EnableStackedTabs Gibt an, ob das Eigenschaftenblatt gestapelte oder scrollende Registerkarten verwendet.
CPropertySheet::EndDialog Beendet das Eigenschaftenblatt.
CPropertySheet::GetActiveIndex Ruft den Index der aktiven Seite des Eigenschaftenblatts ab.
CPropertySheet::GetActivePage Gibt das aktive Seitenobjekt zurück.
CPropertySheet::GetPage Ruft einen Zeiger auf die angegebene Seite ab.
CPropertySheet::GetPageCount Ruft die Anzahl der Seiten im Eigenschaftenblatt ab.
CPropertySheet::GetPageIndex Ruft den Index der angegebenen Seite des Eigenschaftenblatts ab.
CPropertySheet::GetTabControl Ruft einen Zeiger auf ein Registerkartensteuerelement ab.
CPropertySheet::MapDialogRect Konvertiert die Dialogfeldeinheiten eines Rechtecks in Bildschirmeinheiten.
CPropertySheet::OnInitDialog Überschreiben Sie , um die Initialisierung von Eigenschaftenblättern zu erweitern.
CPropertySheet::PressButton Simuliert die Auswahl der angegebenen Schaltfläche in einem Eigenschaftenblatt.
CPropertySheet::RemovePage Entfernt eine Seite aus dem Eigenschaftenblatt.
CPropertySheet::SetActivePage Legt das aktive Seitenobjekt programmgesteuert fest.
CPropertySheet::SetFinishText Legt den Text für die Schaltfläche Fertig stellen fest.
CPropertySheet::SetTitle Legt die Beschriftung des Eigenschaftenblatts fest.
CPropertySheet::SetWizardButtons Aktiviert die Schaltflächen des Assistenten.
CPropertySheet::SetWizardMode Aktiviert den Assistentenmodus.

Öffentliche Datenmember

Name Beschreibung
CPropertySheet::m_psh Die PROPSHEETHEADER Windows-Struktur. Bietet Zugriff auf grundlegende Eigenschaftenblattparameter.

Bemerkungen

Ein Eigenschaftenblatt besteht aus einem CPropertySheet -Objekt und einem oder mehreren CPropertyPage -Objekten. Das Framework zeigt ein Eigenschaftenblatt als Fenster mit einer Reihe von Registerkartenindizes und einem Bereich an, der die aktuell ausgewählte Seite enthält. Der Benutzer navigiert über die entsprechende Registerkarte zu einer bestimmten Seite.

CPropertySheetbietet Unterstützung für die erweiterte Struktur, die PROPSHEETHEADER in Windows 98 und Windows NT 2000 eingeführt wurde. Die -Struktur enthält zusätzliche Flags und Member, die die Verwendung einer "Wasserzeichen"-Hintergrundbitmap unterstützen.

Um diese neuen Bilder automatisch in Ihrem Eigenschaftenblattobjekt anzuzeigen, übergeben Sie gültige Werte für die Bitmap- und Palettenbilder im Aufruf von CPropertySheet::Construct oder CPropertySheet::CPropertySheet .

Obwohl CPropertySheet nicht von abgeleitet CDialog ist, entspricht die Verwaltung eines CPropertySheet -Objekts der Verwaltung eines CDialog -Objekts. Beispielsweise erfordert die Erstellung eines Eigenschaftenblatts eine zweiteilige Konstruktion: Rufen Sie den Konstruktor auf, und rufen Sie dann DoModal für ein modales Eigenschaftenblatt oder Create für ein modusloses Eigenschaftenblatt auf. CPropertySheet verfügt über zwei Typen von Konstruktoren: CPropertySheet::Construct und CPropertySheet::CPropertySheet .

Wenn Sie ein CPropertySheet -Objekt erstellen, können einige CPropertySheet dazu führen, dass eine Ausnahme mit der ersten Chance auftritt. Dies führt dazu, dass das System versucht, den Stil des Eigenschaftenblatts zu ändern, bevor das Blatt erstellt wird. Um diese Ausnahme zu vermeiden, stellen Sie sicher, dass Sie beim Erstellen von die folgenden Stile CPropertySheet festlegen:

  • DS_3DLOOK

  • DS_CONTROL

  • WS_CHILD

  • WS_TABSTOP

Die folgenden Stile sind optional und verursachen nicht die Ausnahme der ersten Chance:

  • DS_SHELLFONT

  • DS_LOCALEDIT

  • WS_CLIPCHILDREN

Alle anderen Window Styles sind unzulässig, und Sie sollten sie nicht aktivieren.

Der Austausch von Daten zwischen einem CPropertySheet -Objekt und einem externen Objekt ähnelt dem Austausch von Daten mit einem CDialog -Objekt. Der wichtige Unterschied besteht darin, dass die Einstellungen eines Eigenschaftenblatts in der Regel Membervariablen der CPropertyPage Objekte und nicht des Objekts selbst CPropertySheet sind.

Sie können ein Registerkartendialogfeld erstellen, das als Assistent bezeichnet wird und aus einem Eigenschaftenblatt mit einer Sequenz von Eigenschaftenseiten besteht, die den Benutzer durch die Schritte eines Vorgangs führen, z. B. das Einrichten eines Geräts oder das Erstellen eines Newsletters. In einem Dialogfeld mit registerkartentyp des Assistenten verfügen die Eigenschaftenseiten nicht über Registerkarten, und es ist jeweils nur eine Eigenschaftenseite sichtbar. Anstatt über die Schaltflächen OK und Jetzt anwenden zu verfügen, verfügt ein Dialogfeld des Assistententyps über die Schaltflächen Zurück,Weiter oder Fertig stellen,abbrechen und Hilfe.

Führen Sie zum Erstellen eines Dialogfelds vom Typ "Assistent" die gleichen Schritte aus, die Sie ausführen würden, um ein Standardeigenschaftenblatt zu erstellen. Rufen Sie jedoch SetWizardMode auf, bevor Sie DoModal aufrufen. Um die Assistentenschaltflächen zu aktivieren, rufen Sie SetWizardButtons auf, indem Sie Flags verwenden, um ihre Funktion und Darstellung anzupassen. Um die Schaltfläche Fertig stellen zu aktivieren, rufen Sie auf, nachdem der Benutzer auf der letzten Seite des Assistenten Eine Aktion ausgeführt hat.

Weitere Informationen zur Verwendung von CPropertySheet -Objekten finden Sie im Artikel CPropertySheet

Vererbungshierarchie

CObject

CCmdTarget

CWnd

CPropertySheet

Requirements (Anforderungen)

Header:

CPropertySheet::AddPage

Fügt die angegebene Seite mit der registerkarte ganz rechts im Eigenschaftenblatt hinzu.

void AddPage(CPropertyPage* pPage);

Parameter

pPage
Zeigt auf die Seite, die dem Eigenschaftenblatt hinzugefügt werden soll. Darf nicht NULL sein.

Bemerkungen

Fügen Sie dem Eigenschaftenblatt Seiten in der Reihenfolge von links nach rechts hinzu, in der sie angezeigt werden sollen.

AddPage fügt das CPropertyPage -Objekt der CPropertySheet Seitenliste des Objekts hinzu, erstellt jedoch nicht das Fenster für die Seite. Das Framework verschiebt die Erstellung des Fensters für die Seite, bis der Benutzer diese Seite auswählt.

Wenn Sie eine Eigenschaftenseite mit AddPage hinzufügen, CPropertySheet ist das übergeordnete Element von CPropertyPage . Rufen Sie auf, um von der Eigenschaftenseite aus Zugriff auf das Eigenschaftenblatt zu CWnd::GetParent erhalten.

Es ist nicht erforderlich, bis zur Erstellung des Eigenschaftenblattfensters zu warten, um AddPage aufzurufen. In der Regel rufen Sie AddPage auf, bevor Sie DoModal oder Create aufrufen.

Wenn Sie AddPage nach dem Anzeigen der Eigenschaftenseite aufrufen, wird die neu hinzugefügte Seite in der Registerkartenzeile angezeigt.

Beispiel

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

Erstellt ein CPropertySheet-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);

Parameter

nIDCaption
ID der Beschriftung, die für das Eigenschaftenblatt verwendet werden soll.

pParentWnd
Zeiger auf das übergeordnete Fenster des Eigenschaftenblatts. Gibt NULL an, dass das übergeordnete Fenster das Hauptfenster der Anwendung ist.

iSelectPage
Der Index der Seite, die sich anfänglich oben befindet. Der Standardwert ist die erste Seite, die dem Blatt hinzugefügt wurde.

pszCaption
Zeiger auf eine Zeichenfolge mit der Beschriftung, die für das Eigenschaftenblatt verwendet werden soll. Darf nicht NULL sein.

hbmWatermark
Handle für die Wasserzeichenbitmap der Eigenschaftenseite.

hpalWatermark
Handle für die Palette der Wasserzeichenbitmap und/oder Headerbitmap.

hbmHeader
Handle für die Headerbitmap der Eigenschaftenseite.

Bemerkungen

Rufen Sie diese Memberfunktion auf, wenn einer der Klassenkonstruktoren noch nicht aufgerufen wurde. Rufen Sie beispielsweise auf, Construct wenn Sie Arrays von -Objekten deklarieren oder CPropertySheet zuordnen. Bei Arrays müssen Sie Construct für jeden Member im Array aufrufen.

Rufen Sie oder auf, um das Eigenschaftenblatt DoModalCreate anzuzeigen. Die im ersten Parameter enthaltene Zeichenfolge wird in der Beschriftungsleiste für das Eigenschaftenblatt platziert.

Sie können Wasserzeichen- und/oder Headerbilder automatisch anzeigen, wenn Sie den dritten oder vierten Prototyp von Construct verwenden, der oben aufgeführt ist, und gültige Werte für die hbmWatermark Parameter , hpalWatermark und/oder hbmHeader übergeben.

Beispiel

Im folgenden Beispiel wird veranschaulicht, unter welchen Umständen Sie aufrufen Construct würden.

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

Erstellt ein CPropertySheet-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);

Parameter

nIDCaption
ID der Beschriftung, die für das Eigenschaftenblatt verwendet werden soll.

pParentWnd
Zeigt auf das übergeordnete Fenster des Eigenschaftenblatts. Gibt NULL an, dass das übergeordnete Fenster das Hauptfenster der Anwendung ist.

iSelectPage
Der Index der Seite, die sich anfänglich oben befindet. Der Standardwert ist die erste Seite, die dem Blatt hinzugefügt wurde.

pszCaption
Zeigt auf eine Zeichenfolge mit der Beschriftung, die für das Eigenschaftenblatt verwendet werden soll. Darf nicht NULL sein.

hbmWatermark
Ein Handle für die Hintergrundbitmap des Eigenschaftenblatts.

hpalWatermark
Ein Handle für die Palette der Wasserzeichenbitmap und/oder Headerbitmap.

hbmHeader
Ein Handle für die Headerbitmap der Eigenschaftenseite.

Bemerkungen

Rufen Sie oder auf, um das Eigenschaftenblatt DoModalCreate anzuzeigen. Die im ersten Parameter enthaltene Zeichenfolge wird in der Beschriftungsleiste für das Eigenschaftenblatt platziert.

Wenn Sie über mehrere Parameter verfügen (z. B. wenn Sie ein Array verwenden), verwenden Sie Construct anstelle von CPropertySheet .

Sie können Wasserzeichen- und/oder Headerbilder automatisch anzeigen, wenn Sie den dritten oder vierten Prototyp von oben verwenden CPropertySheet und gültige Werte für die Parameter , hbmWatermarkhpalWatermark und/oder hbmHeader übergeben.

Beispiel

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

Zeigt ein modusloses Eigenschaftenblatt an.

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

Parameter

pParentWnd
Zeigt auf übergeordnetes Fenster. Gibt NULL an, dass das übergeordnete Element der Desktop ist.

dwStyle
Fensterstile für Eigenschaftenblatt. Eine vollständige Liste der verfügbaren Stile finden Sie unter Fensterstile.

dwExStyle
Erweiterte Fensterstile für Eigenschaftenblätter. Eine vollständige Liste der verfügbaren Stile finden Sie unter Erweiterte Fensterstile.

Rückgabewert

Ungleich 0 (null), wenn das Eigenschaftenblatt erfolgreich erstellt wurde. andernfalls 0.

Bemerkungen

Der Aufruf von Create kann sich innerhalb des Konstruktors befinden, oder Sie können ihn aufrufen, nachdem der Konstruktor aufgerufen wurde.

Der Standardstil, ausgedrückt durch Übergeben von -1 als dwStyle , ist tatsächlich WS_SYSMENU|WS_POPUP|WS_CAPTION|DS_MODALFRAME|DS_CONTEXTHELP|WS_VISIBLE . Der standardmäßige erweiterte Fensterstil, ausgedrückt durch Übergeben von 0 als dwExStyle , ist tatsächlich WS_EX_DLGMODALFRAME .

Die Create Memberfunktion gibt unmittelbar nach dem Erstellen des Eigenschaftenblatts zurück. Rufen Sie auf, um das Eigenschaftenblatt zu CWnd::DestroyWindow zerstören.

Moduslose Eigenschaftenblätter, die mit einem Aufruf von angezeigt werden, verfügen nicht über die Create Schaltflächen OK, Abbrechen, Jetzt anwenden und Hilfe, wie modale Eigenschaftenblätter. Gewünschte Schaltflächen müssen vom Benutzer erstellt werden.

Rufen Sie stattdessen auf, um ein modales Eigenschaftenblatt DoModal anzuzeigen.

Beispiel

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

Zeigt ein modales Eigenschaftenblatt an.

virtual INT_PTR DoModal();

Rückgabewert

IDOK oder IDCANCEL , wenn die Funktion erfolgreich war, andernfalls 0 oder -1. Wenn das Eigenschaftenblatt als Assistent eingerichtet wurde (siehe SetWizardMode ), gibt entweder oder DoModalID_WIZFINISHIDCANCEL zurück.

Bemerkungen

Der Rückgabewert entspricht der ID des Steuerelements, das das Eigenschaftenblatt geschlossen hat. Nachdem diese Funktion zurückgegeben wurde, wurden die Fenster, die dem Eigenschaftenblatt und allen Seiten entsprechen, zerstört. Die Objekte selbst sind weiterhin vorhanden. In der Regel rufen Sie Daten aus den -Objekten ab, CPropertyPage nachdem DoModal IDOK zurückgegeben wurde.

Rufen Sie stattdessen auf, um ein modusloses Eigenschaftenblatt Create anzuzeigen.

Wenn eine Eigenschaftenseite aus der entsprechenden Dialogressource erstellt wird, kann sie eine Ausnahme mit der ersten Chance verursachen. Dies führt dazu, dass die Eigenschaftenseite den Stil der Dialogressource in den erforderlichen Stil ändert, bevor die Seite erstellt wird. Da Ressourcen im Allgemeinen schreibgeschützt sind, wird eine Ausnahme ausgelöst. Das System behandelt die Ausnahme und erstellt eine Kopie der geänderten Ressource. Die Ausnahme der ersten Chance kann daher ignoriert werden.

Hinweis

Diese Ausnahme muss vom Betriebssystem behandelt werden, wenn Sie mit dem asynchronen Ausnahmebehandlungsmodell kompilieren. Weitere Informationen zu Ausnahmebehandlungsmodellen finden Sie unter (Ausnahmebehandlungsmodell). Umschließen Sie in diesem Fall keine Aufrufe von CPropertySheet::DoModal mit einem C++-try-catch-Block, in dem der catch alle Ausnahmen behandelt, z. catch (...) B. . Dieser Block würde die ausnahme behandeln, die für das Betriebssystem vorgesehen ist, und zu unvorhersehbaren Verhaltensweisen führen. Sie können jedoch die C++-Ausnahmebehandlung mit bestimmten Ausnahmetypen oder die strukturierte Ausnahmebehandlung sicher verwenden, wenn die Ausnahme "Zugriffsverletzung" an das Betriebssystem übergeben wird.

Um zu vermeiden, dass diese Ausnahme mit der ersten Chance generiert wird, können Sie manuell garantieren, dass das Eigenschaftenblatt über die richtigen Fensterstile verfügt. Sie müssen die folgenden Stile für ein Eigenschaftenblatt festlegen:

  • DS_3DLOOK

  • DS_CONTROL

  • WS_CHILD

  • WS_TABSTOP

Sie können die folgenden optionalen Stile verwenden, ohne eine Ausnahme mit der ersten Chance zu verursachen:

  • DS_SHELLFONT

  • DS_LOCALEDIT

  • WS_CLIPCHILDREN

Deaktivieren Sie alle anderen Windows Stile, da sie nicht mit Eigenschaftenblättern kompatibel sind. Dieser Hinweis gilt nicht für erweiterte Stile. Wenn Sie diese Standardstile entsprechend festlegen, wird sichergestellt, dass das Eigenschaftenblatt nicht geändert werden muss, und es wird vermieden, dass die Ausnahme mit der ersten Chance generiert wird.

Beispiel

Weitere Informationen finden Sie im Beispiel für CPropertySheet::AddPage .

CPropertySheet::EnableStackedTabs

Gibt an, ob Zeilen von Registerkarten in einem Eigenschaftenblatt gestapelt werden sollen.

void EnableStackedTabs(BOOL bStacked);

Parameter

bStacked
Gibt an, ob gestapelte Registerkarten im Eigenschaftenblatt aktiviert sind. Deaktivieren Sie gestapelte Zeilen von Tags, indem Sie bStacked auf FALSE festlegen.

Bemerkungen

Wenn ein Eigenschaftenblatt mehr Registerkarten aufweist, als in eine einzelne Zeile in der Breite des Eigenschaftenblatts passen, stapeln sich die Registerkarten standardmäßig in mehreren Zeilen. Um Scrollregisterkarten anstelle des Stapelns von Registerkarten zu verwenden, rufen Sie EnableStackedTabs auf, bStacked wobei auf festgelegt FALSE ist, bevor Sie oder DoModalCreate aufrufen.

Sie müssen EnableStackedTabs aufrufen, wenn Sie ein modales oder ein modusloses Eigenschaftenblatt erstellen. Um diesen Stil in eine von abgeleitete Klasse zu CPropertySheet integrieren, schreiben Sie einen Meldungshandler für WM_CREATE . Rufen Sie in der überschriebenen Version von CWnd::OnCreateEnableStackedTabs( FALSE ) auf, bevor Sie die Basisklassenimplementierungen aufrufen.

Beispiel

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

Beendet das Eigenschaftenblatt.

void EndDialog(int nEndID);

Parameter

nEndID
Bezeichner, der als Rückgabewert des Eigenschaftenblatts verwendet werden soll.

Bemerkungen

Diese Memberfunktion wird vom Framework aufgerufen, wenn die Schaltfläche OK, Abbrechen oder Schließen gedrückt wird. Rufen Sie diese Memberfunktion auf, wenn ein Ereignis auftritt, das das Eigenschaftenblatt schließen soll.

Diese Memberfunktion wird nur mit einem modalen Dialogfeld verwendet.

Beispiel

Weitere Informationen finden Sie im Beispiel für CPropertySheet::PressButton .

CPropertySheet::GetActiveIndex

Ruft die Indexnummer der aktiven Seite des Eigenschaftenblattfensters ab und verwendet dann die zurückgegebene Indexnummer als Parameter für GetPage .

int GetActiveIndex() const;

Rückgabewert

Die Indexnummer der aktiven Seite.

Beispiel

Weitere Informationen finden Sie im Beispiel für CPropertySheet::GetActivePage .

CPropertySheet::GetActivePage

Ruft die aktive Seite des Eigenschaftenblattfensters ab.

CPropertyPage* GetActivePage() const;

Rückgabewert

Der Zeiger auf die aktive Seite.

Bemerkungen

Verwenden Sie diese Memberfunktion, um eine Aktion auf der aktiven Seite auszuführen.

Beispiel

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

Gibt einen Zeiger auf die angegebene Seite in diesem Eigenschaftenblatt zurück.

CPropertyPage* GetPage(int nPage) const;

Parameter

nPage
Index der gewünschten Seite, beginnend bei 0. Muss zwischen 0 und 1 kleiner als die Anzahl der Seiten auf dem Eigenschaftenblatt (einschließlich) sein.

Rückgabewert

Der Zeiger auf die Seite, die dem -Parameter nPage entspricht.

Beispiel

Weitere Informationen finden Sie im Beispiel CPropertyPage::OnWizardFinish für .

CPropertySheet::GetPageCount

Bestimmt die Anzahl der Seiten, die derzeit im Eigenschaftenblatt enthalten sind.

int GetPageCount() const;

Rückgabewert

Die Anzahl der Seiten im Eigenschaftenblatt.

Beispiel

Weitere Informationen finden Sie im Beispiel CPropertyPage::OnWizardFinish für .

CPropertySheet::GetPageIndex

Ruft die Indexnummer der angegebenen Seite im Eigenschaftenblatt ab.

int GetPageIndex(CPropertyPage* pPage);

Parameter

pPage
Zeigt auf die Seite mit dem zu findenden Index. Darf nicht NULL sein.

Rückgabewert

Die Indexnummer einer Seite.

Bemerkungen

Beispielsweise würden Sie verwenden, GetPageIndex um den Seitenindex zur Verwendung von oder SetActivePage zu GetPage erhalten.

Beispiel

Weitere Informationen finden Sie im Beispiel CPropertySheet::GetActivePage für .

CPropertySheet::GetTabControl

Ruft einen Zeiger auf ein Registerkarten-Steuerelement ab, um bestimmte Aufgaben für das Registerkarten-Steuerelement (d. h. die Verwendung einer der APIs in ) zu CTabCtrl unternehmen.

CTabCtrl* GetTabControl() const;

Rückgabewert

Ein Zeiger auf ein Registerkarten-Steuerelement.

Bemerkungen

Rufen Sie diese Memberfunktion beispielsweise auf, wenn Sie den einzelnen Registerkarten während der Initialisierung Bitmaps hinzufügen möchten.

Beispiel

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

Eine -Struktur, deren Member die Merkmale von PROPSHEETHEADER speichern.

Bemerkungen

Verwenden Sie diese Struktur, um die Darstellung des Eigenschaftenblatts zu initialisieren, nachdem es erstellt wurde, aber bevor es mit der DoModal Memberfunktion angezeigt wird. Legen Sie beispielsweise den dwSize Member von auf die Größe m_psh fest, die das Eigenschaftenblatt haben soll.

Weitere Informationen zu dieser Struktur, einschließlich einer Auflistung der Member, finden Sie im Windows PROPSHEETHEADER SDK.

Beispiel

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

Konvertiert die Dialogfeldeinheiten eines Rechtecks in Bildschirmeinheiten.

void MapDialogRect(LPRECT lpRect) const;

Parameter

lpRect
Zeigt auf eine RECT Struktur oder CRect ein Objekt, die die zu konvertierten Dialogfeldkoordinaten enthält.

Bemerkungen

Dialogfeldeinheiten werden in Bezug auf die aktuelle Basiseinheit des Dialogfelds angegeben, die von der durchschnittlichen Breite und Höhe der Zeichen in der Schriftart abgeleitet wird, die für Dialogfeldtext verwendet wird. Eine horizontale Einheit ist ein Vierter der Basisbreiteneinheit des Dialogfelds, und eine vertikale Einheit ist ein Achtel der Basishöheneinheit des Dialogfelds.

Die Windows-Funktion gibt Größeninformationen für die Systemschriftart zurück. Sie können jedoch für jedes Eigenschaftenblatt eine andere Schriftart angeben, wenn Sie den DS_SETFONT-Stil in der Ressourcendefinitionsdatei GetDialogBaseUnits verwenden. Die Windows-Funktion, die im Windows SDK beschrieben wird, verwendet die MapDialogRect entsprechende Schriftart für dieses Dialogfeld.

Die Memberfunktion ersetzt die Dialogfeldeinheiten in durch Bildschirmeinheiten (Pixel), sodass das Rechteck verwendet werden kann, um ein Dialogfeld zu erstellen oder ein Steuerelement innerhalb eines MapDialogRect Felds lpRect zu positionieren.

CPropertySheet::OnInitDialog

Überschreibt die Initialisierung von Eigenschaftenblättern.

virtual BOOL OnInitDialog();

Rückgabewert

Gibt an, ob die Anwendung den Eingabefokus auf eines der Steuerelemente im Eigenschaftenblatt festgelegt hat. Wenn OnInitDialog einen Wert ungleich null zurückgibt, Windows den Eingabefokus auf das erste Steuerelement im Eigenschaftenblatt. Die Anwendung kann nur dann 0 zurückgeben, wenn sie den Eingabefokus explizit auf eines der Steuerelemente im Eigenschaftenblatt festgelegt hat.

Bemerkungen

Diese Memberfunktion wird als Antwort auf die Nachricht WM_INITDIALOG aufgerufen. Diese Meldung wird während der - oder -Aufrufe an das Eigenschaftenblatt gesendet, die unmittelbar vor dem Anzeigen des CreateDoModal Eigenschaftenblatts auftreten.

Überschreiben Sie diese Memberfunktion, wenn Sie eine spezielle Verarbeitung ausführen müssen, wenn das Eigenschaftenblatt initialisiert wird. Rufen Sie in der überschriebenen Version zuerst die Basisklasse auf, OnInitDialog ignorieren Sie jedoch ihren Rückgabewert. Normalerweise geben Sie von TRUE Ihrer überschriebenen Memberfunktion zurück.

Sie benötigen keinen Meldungszuordnungseintrag für diese Memberfunktion.

CPropertySheet::PressButton

Simuliert die Auswahl der angegebenen Schaltfläche in einem Eigenschaftenblatt.

void PressButton(int nButton);

Parameter

nButton
nButton : Identifiziert die zu drückende Schaltfläche. Dieser Parameter kann einer der folgenden Werte sein:

  • PSBTN_BACK Wählt die Schaltfläche "Zurück".

  • PSBTN_NEXT Wählt die Schaltfläche Weiter aus.

  • PSBTN_FINISH Wählt die Schaltfläche Fertig stellen aus.

  • PSBTN_OK Wählt die Schaltfläche OK aus.

  • PSBTN_APPLYNOW Wählt die Schaltfläche Jetzt anwenden aus.

  • PSBTN_CANCEL Wählt die Schaltfläche Abbrechen aus.

  • PSBTN_HELP Wählt die Schaltfläche Hilfe aus.

Bemerkungen

Weitere PSM_PRESSBUTTON Informationen zur Meldung zur Windows SDK finden Sie unter .

Ein Aufruf von PressButton sendet die Benachrichtigung PSN_APPLY nicht von einer Eigenschaftenseite an das Framework. Rufen Sie auf, um diese Benachrichtigung zu CPropertyPage::OnOK senden.

Beispiel

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

Entfernt eine Seite aus dem Eigenschaftenblatt und zerstört das zugeordnete Fenster.

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

Parameter

pPage
Zeigt auf die Seite, die aus dem Eigenschaftenblatt entfernt werden soll. Darf nicht NULL sein.

nPage
Index der zu entfernenden Seite. Muss zwischen 0 und 1 kleiner als die Anzahl der Seiten auf dem Eigenschaftenblatt (einschließlich) sein.

Bemerkungen

Das CPropertyPage Objekt selbst wird erst zerstört, wenn der Besitzer des CPropertySheet Fensters geschlossen ist.

CPropertySheet::SetActivePage

Ändert die aktive Seite.

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

Parameter

nPage
Index der seite, die festgelegt werden soll. Er muss zwischen 0 und 1 kleiner als die Anzahl der Seiten auf dem Eigenschaftenblatt (einschließlich) sein.

pPage
Zeigt auf die Seite, die im Eigenschaftenblatt festgelegt werden soll. Diese darf nicht NULL sein.

Rückgabewert

Ungleich 0 (null), wenn das Eigenschaftenblatt erfolgreich aktiviert wurde; andernfalls 0.

Bemerkungen

Verwenden Sie beispielsweise , wenn die Aktion eines Benutzers auf einer Seite dazu führen soll, dass eine andere SetActivePage Seite zur aktiven Seite wird.

Beispiel

Weitere Informationen finden Sie im Beispiel CPropertySheet::GetActivePage für .

CPropertySheet::SetFinishText

Legt den Text in der Befehlsschaltfläche Fertig stellen fest.

void SetFinishText(LPCTSTR lpszText);

Parameter

lpszText
Zeigt auf den Text, der auf der Befehlsschaltfläche Fertig stellen angezeigt werden soll.

Bemerkungen

Rufen Sie auf, um den Text auf der Befehlsschaltfläche Fertig stellen anzuzeigen und die Schaltflächen Weiter und Zurück auszublenden, nachdem der Benutzer die Aktion auf der letzten Seite des SetFinishText Assistenten abgeschlossen hat.

Beispiel

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

Gibt die Beschriftung des Eigenschaftenblatts an (der Text, der in der Titelleiste eines Rahmenfensters angezeigt wird).

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

Parameter

nStyle
Gibt den Stil des Eigenschaftenblatttitels an. Der Stil muss bei 0 oder als angegeben PSH_PROPTITLE werden. Wenn der Stil auf festgelegt PSH_PROPTITLE ist, wird das Wort "Eigenschaften" nach dem als Beschriftung angegebenen Text angezeigt. Beispielsweise führt das SetTitle Aufrufen von ("Simple", ) zu einer PSH_PROPTITLE Eigenschaftenblattbeschriftung von "Simple Properties".

lpszText
Zeigt auf den Text, der als Beschriftung in der Titelleiste des Eigenschaftenblatts verwendet werden soll.

Bemerkungen

Standardmäßig verwendet ein Eigenschaftenblatt den Caption-Parameter im Eigenschaftenblattkonstruktor.

Beispiel

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

Aktiviert oder deaktiviert die Schaltfläche Zurück, Weiter oder Fertig stellen in einem Eigenschaftenblatt des Assistenten.

void SetWizardButtons(DWORD dwFlags);

Parameter

dwFlags
Eine Gruppe von Flags, die die Funktion und Darstellung der Assistentenschaltflächen anpassen. Dieser Parameter kann eine Kombination der folgenden Werte sein:

  • PSWIZB_BACK Schaltfläche "Zurück"

  • PSWIZB_NEXT Schaltfläche "Weiter"

  • PSWIZB_FINISH Schaltfläche "Fertig stellen"

  • PSWIZB_DISABLEDFINISH Schaltfläche "Fertig stellen" deaktiviert

Bemerkungen

Rufen SetWizardButtons Sie erst auf, nachdem das Dialogfeld geöffnet wurde. Sie können nicht SetWizardButtons aufrufen, bevor Sie DoModal aufrufen. In der Regel sollten Sie von SetWizardButtonsCPropertyPage::OnSetActive aufrufen.

Wenn Sie den Text auf der Schaltfläche Fertig stellen ändern oder die Schaltflächen Weiter und Zurück ausblenden möchten, nachdem der Benutzer den Assistenten abgeschlossen hat, rufen Sie SetFinishText auf. Beachten Sie, dass die gleiche Schaltfläche für Fertig stellen und Weiter freigegeben wird. Sie können die Schaltfläche Fertig stellen oder Weiter gleichzeitig anzeigen, aber nicht beides.

Beispiel

Ein CPropertySheet verfügt über drei Eigenschaftenseiten des Assistenten: , und CStylePageCColorPageCShapePage . Das folgende Codefragment zeigt, wie Sie die Schaltflächen Zurück und Weiter auf der Eigenschaftenseite des Assistenten aktivieren und deaktivieren.

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

Richtet eine Eigenschaftenseite als Assistenten ein.

void SetWizardMode();

Bemerkungen

Ein wesentliches Merkmal einer Eigenschaftenseite des Assistenten ist, dass der Benutzer mithilfe der Schaltflächen Weiter oder Fertig stellen, Zurück und Abbrechen statt mit Registerkarten navigiert.

Rufen Sie SetWizardMode auf, bevor Sie DoModal aufrufen. Nach dem Aufruf von gibt entweder (wenn der Benutzer mit der Schaltfläche Fertig stellen geschlossen SetWizardModeDoModalID_WIZFINISH wird) oder IDCANCEL zurück.

SetWizardMode legt das Flag PSH_WIZARD fest.

Beispiel

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

CStylePage pageStyle;
CColorPage pageColor;
CShapePage pageShape;

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

sheet.SetWizardMode();

sheet.DoModal();

Siehe auch

MFC-Beispiel
MFC-Beispiel
MFC-Beispiel
MFC-Beispiel
Klasse
Hierarchiediagramm