CPropertySheet
Klasa
Reprezentuje arkusze właściwości, znane również jako okna dialogowe karty.
Składnia
class CPropertySheet : public CWnd
Elementy członkowskie
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 CDialog
obiektu , 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 CPropertySheet
ustawiono 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 DoModal
metody 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
CPropertySheet
Wymagania
Nagłówek: 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ć.
AddPage
CPropertyPage
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 podpisu, 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 NULL
okno 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ów dla 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 Construct
powyżej, i przekazujesz prawidłowe wartości parametrów hbmWatermark
, hpalWatermark
i/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 podpisu, który ma być używany dla arkusza właściwości.
pParentWnd
Wskazuje okno nadrzędne arkusza właściwości. Jeśli NULL
okno 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ów dla 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 CPropertySheet
prototypu elementu , powyżej i przekazujesz prawidłowe wartości parametrów hbmWatermark
, hpalWatermark
i/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 NULL
element 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ą bStacked
FALSE
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::OnCreate
wersji 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 podpisu arkusza właściwości "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 caption 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 WsteczPSWIZB_NEXT
Przycisk DalejPSWIZB_FINISH
Przycisk ZakończPSWIZB_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
, CColorPage
i 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ę SetWizardMode
DoModal
. Po wywołaniu SetWizardMode
DoModal
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