CPropertySheet Klasa

Reprezentuje arkusze właściwości, znane również jako okna dialogowe karty.

Składnia

class CPropertySheet : public CWnd

Członkowie

Konstruktory publiczne

Nazwa/nazwisko opis
CPropertySheet::CPropertySheet CPropertySheet Tworzy obiekt.

Metody publiczne

Nazwa/nazwisko opis
CPropertySheet::AddPage Dodaje stronę do arkusza właściwości.
CPropertySheet::Construct CPropertySheet Tworzy obiekt.
CPropertySheet::Create Wyświetla arkusz właściwości bez moderowania.
CPropertySheet::DoModal Wyświetla modalny arkusz właściwości.
CPropertySheet::EnableStackedTabs Wskazuje, czy arkusz właściwości używa kart skumulowanych lub przewijania.
CPropertySheet::EndDialog Przerywa arkusz właściwości.
CPropertySheet::GetActiveIndex Pobiera indeks aktywnej strony arkusza właściwości.
CPropertySheet::GetActivePage Zwraca aktywny obiekt strony.
CPropertySheet::GetPage Pobiera wskaźnik do określonej strony.
CPropertySheet::GetPageCount Pobiera liczbę stron w arkuszu właściwości.
CPropertySheet::GetPageIndex Pobiera indeks określonej strony arkusza właściwości.
CPropertySheet::GetTabControl Pobiera wskaźnik do kontrolki karty.
CPropertySheet::MapDialogRect Konwertuje jednostki okna dialogowego prostokąta na jednostki ekranu.
CPropertySheet::OnInitDialog Zastąpij, aby rozszerzyć inicjowanie arkusza właściwości.
CPropertySheet::PressButton Symuluje wybór określonego przycisku w arkuszu właściwości.
CPropertySheet::RemovePage Usuwa stronę z arkusza właściwości.
CPropertySheet::SetActivePage Programowe ustawia aktywny obiekt strony.
CPropertySheet::SetFinishText Ustawia tekst przycisku Zakończ.
CPropertySheet::SetTitle Ustawia podpis arkusza właściwości.
CPropertySheet::SetWizardButtons Włącza przyciski kreatora.
CPropertySheet::SetWizardMode Włącza tryb kreatora.

Publiczne elementy członkowskie danych

Nazwa/nazwisko opis
CPropertySheet::m_psh Struktura systemu Windows PROPSHEETHEADER . Zapewnia dostęp do podstawowych parametrów arkusza właściwości.

Uwagi

Arkusz właściwości składa się z CPropertySheet obiektu i co najmniej jednego CPropertyPage obiektu. Struktura wyświetla arkusz właściwości jako okno z zestawem indeksów tabulacji i obszarem zawierającym aktualnie wybraną stronę. Użytkownik przechodzi do określonej strony przy użyciu odpowiedniej karty.

CPropertySheet Zapewnia obsługę rozszerzonej PROPSHEETHEADER struktury wprowadzonej w systemach Windows 98 i Windows NT 2000. Struktura zawiera dodatkowe flagi i elementy członkowskie, które obsługują używanie mapy bitowej tła "znak wodny".

Aby automatycznie wyświetlić te nowe obrazy w obiekcie arkusza właściwości, przekaż prawidłowe wartości dla obrazów mapy bitowej i palety w wywołaniu metody CPropertySheet::Construct lub CPropertySheet::CPropertySheet.

Mimo że CPropertySheet nie pochodzi z CDialogobiektu , zarządzanie obiektem CPropertySheet przypomina zarządzanie obiektem CDialog . Na przykład utworzenie arkusza właściwości wymaga dwuczęściowej konstrukcji: wywołanie konstruktora, a następnie wywołanie DoModal modalnego arkusza właściwości lub Create arkusza właściwości bez moderowania. CPropertySheet ma dwa typy konstruktorów: CPropertySheet::Construct i CPropertySheet::CPropertySheet.

Podczas konstruowania CPropertySheet obiektu niektóre style okien mogą spowodować wystąpienie wyjątku pierwszego prawdopodobieństwa. Wynika to z systemu próbującego zmienić styl arkusza właściwości przed utworzeniem arkusza. Aby uniknąć tego wyjątku, upewnij się, że podczas tworzenia obiektu CPropertySheetustawiono następujące style:

  • DS_3DLOOK

  • DS_CONTROL

  • WS_CHILD

  • WS_TABSTOP

Następujące style są opcjonalne i nie spowodują wyjątku pierwszej szansy:

  • DS_SHELLFONT

  • DS_LOCALEDIT

  • WS_CLIPCHILDREN

Wszystkie inne Window Styles są zabronione i nie należy ich włączać.

Wymiana danych między obiektem CPropertySheet a obiektem zewnętrznym jest podobna do wymiany danych z obiektem CDialog . Ważną różnicą jest to, że ustawienia arkusza właściwości są zwykle zmiennymi CPropertyPage składowymi obiektów, a nie samym obiektem CPropertySheet .

Można utworzyć typ okna dialogowego karty o nazwie kreator, który składa się z arkusza właściwości z sekwencją stron właściwości, które prowadzą użytkownika przez kroki operacji, takie jak konfigurowanie urządzenia lub tworzenie biuletynu. W oknie dialogowym karty typu kreatora strony właściwości nie mają kart i tylko jedna strona właściwości jest widoczna naraz. Ponadto zamiast przycisków OK i Zastosuj teraz , okno dialogowe karty typu kreatora ma przycisk Wstecz , przycisk Dalej lub Zakończ , przycisk Anuluj i przycisk Pomoc .

Aby utworzyć okno dialogowe typu kreatora, wykonaj te same kroki, które należy wykonać, aby utworzyć standardowy arkusz właściwości, ale przed wywołaniem wywołania DoModalmetody SetWizardMode . Aby włączyć przyciski kreatora, wywołaj metodę SetWizardButtons, używając flag w celu dostosowania ich funkcji i wyglądu. Aby włączyć przycisk Zakończ, wywołaj wywołanie SetFinishText po podjęciu akcji przez użytkownika na ostatniej stronie kreatora.

Aby uzyskać więcej informacji na temat używania CPropertySheet obiektów, zobacz artykuł Arkusze właściwości i strony właściwości.

Hierarchia dziedziczenia

CObject

CCmdTarget

CWnd

CPropertySheet

Wymagania

Nagłówka:afxdlgs.h

CPropertySheet::AddPage

Dodaje podaną stronę z najbardziej prawą kartą w arkuszu właściwości.

void AddPage(CPropertyPage* pPage);

Parametry

pPage
Wskazuje stronę do dodania do arkusza właściwości. Nie można mieć .NULL

Uwagi

Dodaj strony do arkusza właściwości w kolejności od lewej do prawej, którą chcesz wyświetlić.

AddPageCPropertyPage Dodaje obiekt do CPropertySheet listy stron obiektu, ale w rzeczywistości nie tworzy okna dla strony. Platforma odrocza tworzenie okna dla strony, dopóki użytkownik nie wybierze tej strony.

Po dodaniu strony właściwości przy użyciu elementu AddPage, CPropertySheet element jest elementem nadrzędnym obiektu CPropertyPage. Aby uzyskać dostęp do arkusza właściwości ze strony właściwości, wywołaj metodę CWnd::GetParent.

Nie trzeba czekać na utworzenie okna arkusza właściwości w celu wywołania metody AddPage. Zazwyczaj wywołasz połączenie AddPage przed wywołaniem DoModal metody lub Create.

Jeśli wywołasz wywołanie AddPage po wyświetleniu strony właściwości, wiersz karty będzie odzwierciedlać nowo dodaną stronę.

Przykład

// 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 Tworzy obiekt.

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
Identyfikator podpis, który ma być używany dla arkusza właściwości.

pParentWnd
Wskaźnik do okna nadrzędnego arkusza właściwości. Jeśli NULLokno nadrzędne będzie głównym oknem aplikacji.

iSelectPage
Indeks strony, która początkowo będzie znajdować się na górze. Wartość domyślna to pierwsza strona dodana do arkusza.

pszCaption
Wskaźnik do ciągu zawierającego podpis, który ma być używany dla arkusza właściwości. Nie można mieć .NULL

hbmWatermark
Dojście do mapy bitowej znaku wodnego strony właściwości.

hpalWatermark
Uchwyt do palety mapy bitowej znaku wodnego i/lub mapy bitowej nagłówka.

hbmHeader
Dojście do mapy bitowej nagłówka strony właściwości.

Uwagi

Wywołaj tę funkcję składową, jeśli jeden z konstruktorów klas nie został jeszcze wywołany. Na przykład wywołaj metodę Construct podczas deklarowania lub przydzielania tablic CPropertySheet obiektów. W przypadku tablic należy wywołać Construct dla każdego elementu członkowskiego w tablicy.

Aby wyświetlić arkusz właściwości, wywołaj metodę DoModal lub Create. Ciąg zawarty w pierwszym parametrze zostanie umieszczony na pasku podpis arkusza właściwości.

Obrazy znaków wodnych i/lub nagłówków można wyświetlić automatycznie, jeśli używasz trzeciego lub czwartego prototypu elementu , wymienionego Constructpowyżej, i przekazujesz prawidłowe wartości parametrów hbmWatermark, hpalWatermarki/lub hbmHeader .

Przykład

W poniższym przykładzie pokazano, w jakich okolicznościach wywołasz metodę 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 Tworzy obiekt.

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
Identyfikator podpis, który ma być używany dla arkusza właściwości.

pParentWnd
Wskazuje okno nadrzędne arkusza właściwości. Jeśli NULLokno nadrzędne będzie głównym oknem aplikacji.

iSelectPage
Indeks strony, która początkowo będzie znajdować się na górze. Wartość domyślna to pierwsza strona dodana do arkusza.

pszCaption
Wskazuje ciąg zawierający podpis, który ma być używany dla arkusza właściwości. Nie można mieć .NULL

hbmWatermark
Uchwyt do tła mapy bitowej arkusza właściwości.

hpalWatermark
Uchwyt do palety mapy bitowej znaku wodnego i/lub mapy bitowej nagłówka.

hbmHeader
Uchwyt do nagłówka mapy bitowej strony właściwości.

Uwagi

Aby wyświetlić arkusz właściwości, wywołaj metodę DoModal lub Create. Ciąg zawarty w pierwszym parametrze zostanie umieszczony na pasku podpis arkusza właściwości.

Jeśli masz wiele parametrów (na przykład jeśli używasz tablicy), użyj zamiast CPropertySheet.Construct

Obrazy znaków wodnych i/lub nagłówków można wyświetlić automatycznie, jeśli używasz trzeciego lub czwartego CPropertySheetprototypu elementu , powyżej i przekazujesz prawidłowe wartości parametrów hbmWatermark, hpalWatermarki/lub hbmHeader .

Przykład

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

Wyświetla arkusz właściwości bez moderowania.

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

Parametry

pParentWnd
Wskazuje okno nadrzędne. Jeśli NULLelement nadrzędny jest pulpitem.

dwStyle
Style okien dla arkusza właściwości. Aby uzyskać pełną listę dostępnych stylów, zobacz Style okien.

dwExStyle
Rozszerzone style okien dla arkusza właściwości. Aby uzyskać pełną listę dostępnych stylów, zobacz Rozszerzone style okien

Wartość zwracana

Niezerowe, jeśli arkusz właściwości został utworzony pomyślnie; w przeciwnym razie 0.

Uwagi

Wywołanie Create elementu może znajdować się wewnątrz konstruktora lub wywołać je po wywołaniu konstruktora.

Domyślny styl, wyrażony przez przekazanie -1 jako dwStyle, jest rzeczywiście WS_SYSMENU|WS_POPUP|WS_CAPTION|DS_MODALFRAME|DS_CONTEXTHELP|WS_VISIBLE. Domyślny styl okna rozszerzonego, wyrażony przez przekazanie wartości 0 jako dwExStyle, to w rzeczywistości WS_EX_DLGMODALFRAME.

Create Funkcja składowa jest zwracana natychmiast po utworzeniu arkusza właściwości. Aby zniszczyć arkusz właściwości, wywołaj metodę CWnd::DestroyWindow.

Modeless arkusze właściwości wyświetlane z wywołaniem Create nie mają przycisków OK, Anuluj, Zastosuj teraz i Pomoc jako modalne arkusze właściwości. Żądane przyciski muszą być tworzone przez użytkownika.

Aby wyświetlić modalny arkusz właściwości, wywołaj DoModal zamiast tego.

Przykład

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

Wyświetla modalny arkusz właściwości.

virtual INT_PTR DoModal();

Wartość zwracana

IDOK lub IDCANCEL jeśli funkcja zakończyła się pomyślnie; w przeciwnym razie 0 lub -1. Jeśli arkusz właściwości został ustanowiony jako kreator (zobacz SetWizardMode), DoModal zwraca wartość ID_WIZFINISH lub IDCANCEL.

Uwagi

Wartość zwracana odpowiada identyfikatorowi kontrolki, która zamknęła arkusz właściwości. Po powrocie tej funkcji okna odpowiadające arkuszowi właściwości i wszystkie strony zostaną zniszczone. Same obiekty nadal będą istnieć. Zazwyczaj dane z CPropertyPage obiektów są pobierane po DoModal zwracaniu elementu IDOK.

Aby wyświetlić arkusz właściwości bez moderowania, wywołaj zamiast tego wywołaj metodę Create .

Po utworzeniu strony właściwości na podstawie odpowiedniego zasobu okna dialogowego może to spowodować wyjątek pierwszej szansy. Wynika to ze strony właściwości zmieniającej styl zasobu okna dialogowego na wymagany styl przed utworzeniem strony. Ponieważ zasoby są zwykle tylko do odczytu, powoduje to wyjątek. System obsługuje wyjątek i tworzy kopię zmodyfikowanego zasobu. W związku z tym można zignorować wyjątek pierwszej szansy.

Uwaga

Ten wyjątek musi być obsługiwany przez system operacyjny, jeśli kompilujesz z modelem obsługi wyjątków asynchronicznych. Aby uzyskać więcej informacji na temat modeli obsługi wyjątków, zobacz /EH (Model obsługi wyjątków). W takim przypadku nie zawijaj wywołań za CPropertySheet::DoModal pomocą bloku try-catch języka C++, w którym catch obsługuje wszystkie wyjątki, na przykład catch (...). Ten blok obsłuży wyjątek przeznaczony dla systemu operacyjnego i spowoduje nieprzewidywalne zachowanie. Można jednak bezpiecznie użyć obsługi wyjątków języka C++ z określonymi typami wyjątków lub obsługą wyjątków strukturalnych, w których wyjątek naruszenia dostępu jest przekazywany do systemu operacyjnego.

Aby uniknąć generowania tego wyjątku pierwszego prawdopodobieństwa, możesz ręcznie zagwarantować, że arkusz właściwości ma poprawne style okna. Należy ustawić następujące style dla arkusza właściwości:

  • DS_3DLOOK

  • DS_CONTROL

  • WS_CHILD

  • WS_TABSTOP

Możesz użyć następujących opcjonalnych stylów bez powodowania wyjątku pierwszej szansy:

  • DS_SHELLFONT

  • DS_LOCALEDIT

  • WS_CLIPCHILDREN

Wyłącz wszystkie inne style systemu Windows, ponieważ nie są one zgodne z arkuszami właściwości. Ta rada nie ma zastosowania do stylów rozszerzonych. Odpowiednie ustawienie tych stylów standardowych gwarantuje, że arkusz właściwości nie musi być modyfikowany i unika generowania wyjątku pierwszego prawdopodobieństwa.

Przykład

Zobacz przykład dla elementu CPropertySheet::AddPage.

CPropertySheet::EnableStackedTabs

Wskazuje, czy należy stosować wiersze kart w arkuszu właściwości.

void EnableStackedTabs(BOOL bStacked);

Parametry

bStacked
Wskazuje, czy karty skumulowane są włączone w arkuszu właściwości. Wyłącz skumulowane wiersze tagów, ustawiając wartość bStacked .FALSE

Uwagi

Domyślnie jeśli arkusz właściwości ma więcej kart niż zmieści się w jednym wierszu w szerokości arkusza właściwości, karty będą stosowane w wielu wierszach. Aby użyć kart przewijania zamiast stosu kart, wywołaj metodę EnableStackedTabs z ustawioną wartością bStackedFALSE przed wywołaniem DoModal lub Create.

Podczas tworzenia modalnego lub moderowego arkusza właściwości należy wywołać EnableStackedTabs metodę. Aby uwzględnić ten styl w klasie pochodnej CPropertySheet, napisz procedurę obsługi komunikatów dla klasy WM_CREATE. W zastąpionej CWnd::OnCreatewersji wywołaj metodę EnableStackedTabs( FALSE ) przed wywołaniem implementacji klasy bazowej.

Przykład

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

Przerywa arkusz właściwości.

void EndDialog(int nEndID);

Parametry

nEndID
Identyfikator, który ma być używany jako wartość zwracana arkusza właściwości.

Uwagi

Ta funkcja składowa jest wywoływana przez platformę po naciśnięciu przycisku OK, Anuluj lub Zamknij. Wywołaj tę funkcję składową, jeśli wystąpi zdarzenie, które powinno zamknąć arkusz właściwości.

Ta funkcja składowa jest używana tylko w modalnym oknie dialogowym.

Przykład

Zobacz przykład dla elementu CPropertySheet::PressButton.

CPropertySheet::GetActiveIndex

Pobiera numer indeksu aktywnej strony okna arkusza właściwości, a następnie używa zwróconego numeru indeksu jako parametru .GetPage

int GetActiveIndex() const;

Wartość zwracana

Numer indeksu aktywnej strony.

Przykład

Zobacz przykład dla elementu CPropertySheet::GetActivePage.

CPropertySheet::GetActivePage

Pobiera aktywną stronę okna arkusza właściwości.

CPropertyPage* GetActivePage() const;

Wartość zwracana

Wskaźnik do aktywnej strony.

Uwagi

Użyj tej funkcji składowej, aby wykonać jakąś akcję na aktywnej stronie.

Przykład

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

Zwraca wskaźnik do określonej strony w tym arkuszu właściwości.

CPropertyPage* GetPage(int nPage) const;

Parametry

nPage
Indeks żądanej strony, zaczynając od 0. Musi zawierać się między 0 a jedną mniejszą niż liczba stron w arkuszu właściwości, włącznie.

Wartość zwracana

Wskaźnik do strony odpowiadającej parametrowi nPage .

Przykład

Zobacz przykład dla elementu CPropertyPage::OnWizardFinish.

CPropertySheet::GetPageCount

Określa liczbę stron aktualnie w arkuszu właściwości.

int GetPageCount() const;

Wartość zwracana

Liczba stron w arkuszu właściwości.

Przykład

Zobacz przykład dla elementu CPropertyPage::OnWizardFinish.

CPropertySheet::GetPageIndex

Pobiera numer indeksu określonej strony w arkuszu właściwości.

int GetPageIndex(CPropertyPage* pPage);

Parametry

pPage
Wskazuje stronę z indeksem, który ma zostać znaleziony. Nie można mieć .NULL

Wartość zwracana

Numer indeksu strony.

Uwagi

Na przykład można użyć GetPageIndex polecenia , aby uzyskać indeks strony, aby użyć SetActivePage polecenia lub GetPage.

Przykład

Zobacz przykład dla elementu CPropertySheet::GetActivePage.

CPropertySheet::GetTabControl

Pobiera wskaźnik do kontrolki karty, aby wykonać coś specyficznego dla kontrolki tabulacji (czyli do używania dowolnego interfejsu API w programie CTabCtrl).

CTabCtrl* GetTabControl() const;

Wartość zwracana

Wskaźnik do kontrolki tabulacji.

Uwagi

Na przykład wywołaj tę funkcję składową, jeśli chcesz dodać mapy bitowe do każdej karty podczas inicjowania.

Przykład

// 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, której elementy członkowskie przechowują cechy .PROPSHEETHEADER

Uwagi

Ta struktura służy do inicjowania wyglądu arkusza właściwości po jego konstrukcji, ale przed wyświetleniem jej z funkcją składową DoModal . Na przykład ustaw dwSize element członkowski m_psh na rozmiar, który ma mieć arkusz właściwości.

Aby uzyskać więcej informacji na temat tej struktury, w tym listy jej członków, zobacz PROPSHEETHEADER w zestawie Windows SDK.

Przykład

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

Konwertuje jednostki okna dialogowego prostokąta na jednostki ekranu.

void MapDialogRect(LPRECT lpRect) const;

Parametry

lpRect
RECT Wskazuje strukturę lub CRect obiekt zawierający współrzędne okna dialogowego, które mają zostać przekonwertowane.

Uwagi

Jednostki okna dialogowego są określone w odniesieniu do bieżącej jednostki bazowej okna dialogowego pochodzącej ze średniej szerokości i wysokości znaków w czcionki używanej dla tekstu okna dialogowego. Jedna jednostka pozioma to jedna czwarta jednostki szerokości bazowej okna dialogowego, a jedna jednostka pionowa to jedna ósma jednostki wysokości bazowej okna dialogowego.

Funkcja GetDialogBaseUnits systemu Windows zwraca informacje o rozmiarze czcionki systemowej, ale można określić inną czcionkę dla każdego arkusza właściwości, jeśli używasz stylu DS_SETFONT w pliku definicji zasobów. Funkcja MapDialogRect systemu Windows opisana w zestawie Windows SDK używa odpowiedniej czcionki dla tego okna dialogowego.

Funkcja MapDialogRect składowa zastępuje jednostki okna dialogowego w elemencie lpRect jednostki ekranu (piksele), dzięki czemu prostokąt może służyć do tworzenia okna dialogowego lub umieszczania kontrolki w polu.

CPropertySheet::OnInitDialog

Zastępuje inicjowanie arkusza właściwości.

virtual BOOL OnInitDialog();

Wartość zwracana

Określa, czy aplikacja ustawiła fokus wejściowy na jedną z kontrolek w arkuszu właściwości. Jeśli OnInitDialog zwraca wartość niezerową, system Windows ustawia fokus wejściowy na pierwszą kontrolkę w arkuszu właściwości. Aplikacja może zwrócić wartość 0 tylko wtedy, gdy jawnie ustawiła fokus wejściowy na jeden z kontrolek w arkuszu właściwości.

Uwagi

Ta funkcja składowa jest wywoływana WM_INITDIALOG w odpowiedzi na komunikat. Ten komunikat jest wysyłany do arkusza właściwości podczas Create wywołań lub DoModal , które występują bezpośrednio przed wyświetleniem arkusza właściwości.

Zastąpi tę funkcję składową, jeśli musisz wykonać specjalne przetwarzanie podczas inicjowania arkusza właściwości. W przesłoniętej wersji najpierw wywołaj klasę OnInitDialog bazową, ale zignoruj jej wartość zwracaną. Zwykle zwracana TRUE jest funkcja przesłoniętego elementu członkowskiego.

Nie potrzebujesz wpisu mapy komunikatów dla tej funkcji składowej.

CPropertySheet::PressButton

Symuluje wybór określonego przycisku w arkuszu właściwości.

void PressButton(int nButton);

Parametry

nButton
nButton : identyfikuje przycisk do naciśnięcia. Ten parametr może być jedną z następujących wartości:

  • PSBTN_BACK Wybiera przycisk Wstecz.

  • PSBTN_NEXT Wybiera przycisk Dalej.

  • PSBTN_FINISH Wybiera przycisk Zakończ.

  • PSBTN_OK Wybiera przycisk OK.

  • PSBTN_APPLYNOW Wybiera przycisk Zastosuj teraz.

  • PSBTN_CANCEL Wybiera przycisk Anuluj.

  • PSBTN_HELP Wybiera przycisk Pomoc.

Uwagi

Zobacz PSM_PRESSBUTTON , aby uzyskać więcej informacji na temat komunikatu pressbutton zestawu Windows SDK.

Wywołanie metody nie PressButton spowoduje wysłania PSN_APPLY powiadomienia ze strony właściwości do struktury. Aby wysłać to powiadomienie, wywołaj metodę CPropertyPage::OnOK.

Przykład

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

Usuwa stronę z arkusza właściwości i niszczy skojarzone okno.

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

Parametry

pPage
Wskazuje stronę, która ma zostać usunięta z arkusza właściwości. Nie można mieć .NULL

nPage
Indeks strony do usunięcia. Musi zawierać się między 0 a jedną mniejszą niż liczba stron w arkuszu właściwości, włącznie.

Uwagi

Sam CPropertyPage obiekt nie zostanie zniszczony, dopóki właściciel CPropertySheet okna nie zostanie zamknięty.

CPropertySheet::SetActivePage

Zmienia aktywną stronę.

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

Parametry

nPage
Indeks strony do ustawienia. Musi zawierać się między 0 a jedną mniejszą niż liczba stron w arkuszu właściwości, włącznie.

pPage
Wskazuje stronę do ustawienia w arkuszu właściwości. Nie może to być NULL.

Wartość zwracana

Nonzero, jeśli arkusz właściwości został aktywowany pomyślnie; w przeciwnym razie 0.

Uwagi

Na przykład użyj SetActivePage polecenia , jeśli akcja użytkownika na jednej stronie powinna spowodować, że inna strona stanie się aktywną stroną.

Przykład

Zobacz przykład dla elementu CPropertySheet::GetActivePage.

CPropertySheet::SetFinishText

Ustawia tekst w przycisku Polecenia Zakończ.

void SetFinishText(LPCTSTR lpszText);

Parametry

lpszText
Wskazuje tekst, który ma być wyświetlany na przycisku Zakończ polecenie.

Uwagi

Wywołaj metodę SetFinishText , aby wyświetlić tekst na przycisku Zakończ polecenie i ukryć przyciski Dalej i Wstecz po zakończeniu akcji przez użytkownika na ostatniej stronie kreatora.

Przykład

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

Określa podpis arkusza właściwości (tekst wyświetlany na pasku tytułu okna ramki).

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

Parametry

nStyle
Określa styl tytułu arkusza właściwości. Styl musi być określony na 0 lub jako PSH_PROPTITLE. Jeśli styl jest ustawiony jako PSH_PROPTITLE, słowo "Właściwości" pojawia się po tekście określonym jako podpis. Na przykład wywołanie metody SetTitle("Simple", PSH_PROPTITLE) spowoduje wyświetlenie arkusza właściwości podpis "Właściwości proste".

lpszText
Wskazuje tekst, który ma być używany jako podpis na pasku tytułu arkusza właściwości.

Uwagi

Domyślnie arkusz właściwości używa parametru podpis w konstruktorze arkusza właściwości.

Przykład

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

Włącza lub wyłącza przycisk Wstecz, Dalej lub Zakończ w arkuszu właściwości kreatora.

void SetWizardButtons(DWORD dwFlags);

Parametry

dwFlags
Zestaw flag, które dostosują funkcję i wygląd przycisków kreatora. Ten parametr może być kombinacją następujących wartości:

  • PSWIZB_BACK Przycisk Wstecz

  • PSWIZB_NEXT Przycisk Dalej

  • PSWIZB_FINISH Przycisk Zakończ

  • PSWIZB_DISABLEDFINISH Wyłączony przycisk Zakończ

Uwagi

Wywołaj połączenie SetWizardButtons dopiero po otwarciu okna dialogowego. Nie można wywołać SetWizardButtons metody przed wywołaniem metody DoModal. Zazwyczaj należy wywołać metodę SetWizardButtons z .CPropertyPage::OnSetActive

Jeśli chcesz zmienić tekst na przycisku Zakończ lub ukryć przyciski Dalej i Wstecz po zakończeniu pracy kreatora przez użytkownika, wywołaj metodę SetFinishText. Należy pamiętać, że ten sam przycisk jest udostępniany dla pozycji Zakończ i Dalej. Jednocześnie można wyświetlić przycisk Zakończ lub Dalej, ale nie oba.

Przykład

Obiekt CPropertySheet ma trzy strony właściwości kreatora: CStylePage, CColorPagei CShapePage. Poniższy fragment kodu pokazuje, jak włączyć i wyłączyć przyciski Wstecz i Dalej na stronie właściwości kreatora.

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

Ustanawia stronę właściwości jako kreatora.

void SetWizardMode();

Uwagi

Kluczową cechą strony właściwości kreatora jest to, że użytkownik przechodzi przy użyciu przycisków Dalej lub Zakończ, Wstecz i Anuluj zamiast kart.

Przed wywołaniem metody wywołaj metodę SetWizardModeDoModal. Po wywołaniu SetWizardModeDoModal metody zostanie zwrócona wartość ID_WIZFINISH (jeśli użytkownik zamknie się za pomocą przycisku Zakończ) lub IDCANCEL.

SetWizardMode ustawia flagę PSH_WIZARD .

Przykład

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

CStylePage pageStyle;
CColorPage pageColor;
CShapePage pageShape;

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

sheet.SetWizardMode();

sheet.DoModal();

Zobacz też

Przykład MFC CMNCTRL1
Przykład MFC CMNCTRL2
Przykład MFC PROPDLG
Przykład MFC SNAPVW
CWnd Klasa
Wykres hierarchii