CPropertySheet
Sınıf
Sekme iletişim kutuları olarak da bilinen özellik sayfalarını temsil eder.
Sözdizimi
class CPropertySheet : public CWnd
Üyeler
Ortak Oluşturucular
Veri Akışı Adı | Açıklama |
---|---|
CPropertySheet::CPropertySheet |
Bir CPropertySheet nesne oluşturur. |
Genel Yöntemler
Veri Akışı Adı | Açıklama |
---|---|
CPropertySheet::AddPage |
Özellik sayfasına bir sayfa ekler. |
CPropertySheet::Construct |
Bir CPropertySheet nesne oluşturur. |
CPropertySheet::Create |
Modsuz bir özellik sayfası görüntüler. |
CPropertySheet::DoModal |
Kalıcı bir özellik sayfası görüntüler. |
CPropertySheet::EnableStackedTabs |
Özellik sayfasının yığılmış veya kaydırma sekmeleri kullanıp kullanmadığını gösterir. |
CPropertySheet::EndDialog |
Özellik sayfasını sonlandırır. |
CPropertySheet::GetActiveIndex |
Özellik sayfasının etkin sayfasının dizinini alır. |
CPropertySheet::GetActivePage |
Etkin sayfa nesnesini döndürür. |
CPropertySheet::GetPage |
Belirtilen sayfaya bir işaretçi alır. |
CPropertySheet::GetPageCount |
Özellik sayfasındaki sayfa sayısını alır. |
CPropertySheet::GetPageIndex |
Özellik sayfasının belirtilen sayfasının dizinini alır. |
CPropertySheet::GetTabControl |
Sekme denetiminin işaretçisini alır. |
CPropertySheet::MapDialogRect |
Dikdörtgenin iletişim kutusu birimlerini ekran birimlerine dönüştürür. |
CPropertySheet::OnInitDialog |
Özellik sayfası başlatmayı artırmak için geçersiz kılın. |
CPropertySheet::PressButton |
Bir özellik sayfasında belirtilen düğme seçiminin benzetimini oluşturur. |
CPropertySheet::RemovePage |
Özellik sayfasından bir sayfa kaldırır. |
CPropertySheet::SetActivePage |
Program aracılığıyla etkin sayfa nesnesini ayarlar. |
CPropertySheet::SetFinishText |
Son düğmesinin metnini ayarlar. |
CPropertySheet::SetTitle |
Özellik sayfasının resim yazısını ayarlar. |
CPropertySheet::SetWizardButtons |
Sihirbaz düğmelerini etkinleştirir. |
CPropertySheet::SetWizardMode |
Sihirbaz modunu etkinleştirir. |
Ortak Veri Üyeleri
Veri Akışı Adı | Açıklama |
---|---|
CPropertySheet::m_psh |
Windows PROPSHEETHEADER yapısı. Temel özellik sayfası parametrelerine erişim sağlar. |
Açıklamalar
Özellik sayfası bir nesneden ve bir CPropertySheet
veya daha fazla CPropertyPage
nesneden oluşur. Çerçeve, bir özellik sayfasını bir dizi sekme dizini ve seçili durumdaki sayfayı içeren bir alan içeren bir pencere olarak görüntüler. Kullanıcı, uygun sekmeyi kullanarak belirli bir sayfaya gider.
CPropertySheet
, Windows 98 ve Windows NT 2000'de kullanıma sunulan genişletilmiş PROPSHEETHEADER
yapı için destek sağlar. Yapı, "filigran" arka plan bit eşlemi kullanmayı destekleyen ek bayraklar ve üyeler içerir.
Bu yeni görüntüleri özellik sayfası nesnenizde otomatik olarak görüntülemek için, veya CPropertySheet::CPropertySheet
çağrısında CPropertySheet::Construct
bit eşlem ve palet görüntüleri için geçerli değerler geçirin.
öğesinden türetilmemiş olsa CPropertySheet
da, bir CPropertySheet
nesneyi yönetmek, bir CDialog
nesneyi yönetmek gibidir.CDialog
Örneğin, özellik sayfası oluşturmak için iki parçalı bir yapı gerekir: oluşturucuyu çağırın ve sonra kalıcı bir özellik sayfası veya Create
modsuz özellik sayfası için çağırınDoModal
. CPropertySheet
iki tür oluşturucuya sahiptir: CPropertySheet::Construct
ve CPropertySheet::CPropertySheet
.
Bir CPropertySheet
nesne oluşturduğunuzda, bazı Pencere Stilleri ilk şans özel durumunun oluşmasına neden olabilir. Bu, sistemden, sayfa oluşturulmadan önce özellik sayfasının stilini değiştirmeye çalışmasından kaynaklanır. Bu özel durumu önlemek için, aşağıdaki stilleri oluştururken CPropertySheet
ayarladığınızdan emin olun:
DS_3DLOOK
DS_CONTROL
WS_CHILD
WS_TABSTOP
Aşağıdaki stiller isteğe bağlıdır ve ilk şans özel duruma neden olmaz:
DS_SHELLFONT
DS_LOCALEDIT
WS_CLIPCHILDREN
Diğerleri Window Styles
yasaktır ve bunları etkinleştirmemelisiniz.
Bir CPropertySheet
nesne ile dış nesne arasında veri alışverişi yapmak, bir nesneyle CDialog
veri alışverişi yapmaya benzer. Önemli fark, özellik sayfasının ayarlarının genellikle nesnenin CPropertyPage
kendisi yerine CPropertySheet
nesnelerin üye değişkenleri olmasıdır.
Bir cihaz ayarlama veya bülten oluşturma gibi bir işlemin adımları boyunca kullanıcıya yol gösteren özellik sayfaları dizisine sahip bir özellik sayfasından oluşan, sihirbaz olarak adlandırılan bir sekme iletişim kutusu türü oluşturabilirsiniz. Sihirbaz türündeki sekme iletişim kutusunda, özellik sayfalarında sekmeler yoktur ve aynı anda yalnızca bir özellik sayfası görünür. Ayrıca, Tamam ve Şimdi Uygula düğmeleri yerine, sihirbaz türündeki bir sekme iletişim kutusunda Geri düğmesi, İleri veya Son düğmesi, İptal düğmesi ve Yardım düğmesi bulunur.
Sihirbaz türü iletişim kutusu oluşturmak için, standart özellik sayfası oluşturmak için izleyebileceğiniz adımları izleyin, ancak çağırmadan önce öğesini çağırın SetWizardMode
DoModal
. Sihirbaz düğmelerini etkinleştirmek için, işlevlerini ve görünümlerini özelleştirmek için bayrakları kullanarak öğesini çağırın SetWizardButtons
. Son düğmesini etkinleştirmek için, kullanıcı sihirbazın son sayfasında işlem yaptıktan sonra öğesini çağırınSetFinishText
.
Nesnelerin nasıl kullanılacağı CPropertySheet
hakkında daha fazla bilgi için Özellik Sayfaları ve Özellik Sayfaları makalesine bakın.
Devralma Hiyerarşisi
CPropertySheet
Gereksinimler
Üstbilgi: afxdlgs.h
CPropertySheet::AddPage
Sağlanan sayfayı özellik sayfasında en sağdaki sekmeyle ekler.
void AddPage(CPropertyPage* pPage);
Parametreler
pPage
Özellik sayfasına eklenecek sayfayı gösterir. olamaz NULL
.
Açıklamalar
Özellik sayfasına sayfaların görünmesini istediğiniz soldan sağa sırada ekleyin.
AddPage
CPropertyPage
nesneyi nesnenin CPropertySheet
sayfa listesine ekler, ancak aslında sayfa için pencere oluşturmaz. Çerçeve, kullanıcı bu sayfayı seçene kadar sayfanın penceresinin oluşturulmasını erteler.
kullanarak AddPage
bir özellik sayfası eklediğinizde , CPropertySheet
öğesinin üst öğesidir CPropertyPage
. Özellik sayfasından özellik sayfasına erişim elde etmek için öğesini çağırın CWnd::GetParent
.
çağırmak AddPage
için özellik sayfası penceresi oluşturulana kadar beklemeniz gerekmez. Genellikle, veya Create
çağrıdan önce ararsınız.AddPage
DoModal
Özellik sayfasını görüntüledikten sonra ararsanız AddPage
, sekme satırı yeni eklenen sayfayı yansıtır.
Örnek
// 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
Bir CPropertySheet
nesne oluşturur.
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);
Parametreler
nIDCaption
Özellik sayfası için kullanılacak resim yazısının kimliği.
pParentWnd
Özellik sayfasının üst penceresinin işaretçisi. ise NULL
, üst pencere uygulamanın ana penceresi olur.
iSelectPage
Başlangıçta üstte olacak sayfanın dizini. Varsayılan, sayfaya eklenen ilk sayfadır.
pszCaption
Özellik sayfası için kullanılacak resim yazısını içeren bir dize işaretçisi. olamaz NULL
.
hbmWatermark
Özellik sayfasının filigran bit eşlemini işle.
hpalWatermark
Filigran bit eşleminin ve/veya üst bilgi bit eşleminin paletine tutamacı.
hbmHeader
Özellik sayfasının üst bilgi bit eşleminin tutamacı.
Açıklamalar
Sınıf oluşturucularından biri henüz çağrılmadıysa bu üye işlevini çağırın. Örneğin, nesne dizilerini bildirdiğinizde veya ayırdığınızda çağırın Construct
CPropertySheet
. Diziler söz konusu olduğunda, dizideki her üyeyi çağırmanız Construct
gerekir.
Özellik sayfasını görüntülemek için veya Create
öğesini çağırınDoModal
. İlk parametrede yer alan dize, özellik sayfasının resim yazısı çubuğuna yerleştirilir.
Yukarıda listelenen üçüncü veya dördüncü prototiplerini Construct
kullanırsanız ve , hpalWatermark
ve/veya parametreleri için hbmWatermark
geçerli değerler geçirirseniz filigran ve/veya hbmHeader
üst bilgi görüntülerini otomatik olarak görüntüleyebilirsiniz.
Örnek
Aşağıdaki örnek, hangi koşullarda çağırabileceğinizi Construct
gösterir.
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
Bir CPropertySheet
nesne oluşturur.
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);
Parametreler
nIDCaption
Özellik sayfası için kullanılacak resim yazısının kimliği.
pParentWnd
Özellik sayfasının üst penceresine işaret eder. ise NULL
, üst pencere uygulamanın ana penceresi olur.
iSelectPage
Başlangıçta üstte olacak sayfanın dizini. Varsayılan, sayfaya eklenen ilk sayfadır.
pszCaption
Özellik sayfası için kullanılacak resim yazısını içeren bir dizeye işaret eder. olamaz NULL
.
hbmWatermark
Özellik sayfasının arka plan bit eşleminin tutamacı.
hpalWatermark
Filigran bit eşlemi ve/veya üst bilgi bit eşlemi paletinin tutamacı.
hbmHeader
Özellik sayfasının üst bilgi bit eşleminin tanıtıcısı.
Açıklamalar
Özellik sayfasını görüntülemek için veya Create
öğesini çağırınDoModal
. İlk parametrede yer alan dize, özellik sayfasının resim yazısı çubuğuna yerleştirilir.
Birden çok parametreniz varsa (örneğin, bir dizi kullanıyorsanız), yerine CPropertySheet
kullanınConstruct
.
Yukarıdaki öğesinin üçüncü veya dördüncü prototiplerini CPropertySheet
kullanırsanız ve , hpalWatermark
ve/veya parametreleri için hbmWatermark
geçerli değerler geçirirseniz filigran ve/veya hbmHeader
üst bilgi görüntülerini otomatik olarak görüntüleyebilirsiniz.
Örnek
// 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
Modsuz bir özellik sayfası görüntüler.
virtual BOOL Create(CWnd* pParentWnd = NULL,
DWORD dwStyle = (DWORD)-1,
DWORD dwExStyle = 0);
Parametreler
pParentWnd
Üst pencereyi gösterir. ise NULL
, üst masaüstüdür.
dwStyle
Özellik sayfası için pencere stilleri. Kullanılabilir stillerin tam listesi için bkz . Pencere Stilleri.
dwExStyle
Özellik sayfası için genişletilmiş pencere stilleri. Kullanılabilir stillerin tam listesi için bkz. Genişletilmiş Pencere Stilleri
Dönüş Değeri
Özellik sayfası başarıyla oluşturulursa sıfır olmayan; aksi takdirde 0.
Açıklamalar
çağrısı Create
oluşturucunun içinde olabilir veya oluşturucu çağrıldıktan sonra çağırabilirsiniz.
-1 dwStyle
olarak geçirilerek ifade edilen varsayılan stil aslında WS_SYSMENU|WS_POPUP|WS_CAPTION|DS_MODALFRAME|DS_CONTEXTHELP|WS_VISIBLE
şeklindedir. 0 dwExStyle
değeri geçirilerek ifade edilen varsayılan genişletilmiş pencere stili aslında WS_EX_DLGMODALFRAME
şeklindedir.
Üye işlevi, Create
özellik sayfası oluşturulduktan hemen sonra döndürür. Özellik sayfasını yok etmek için öğesini çağırın CWnd::DestroyWindow
.
Kalıcı özellik sayfalarında olduğu gibi Tamam, İptal, Şimdi Uygula ve Yardım düğmelerine sahip olmayan bir çağrıyla Create
görüntülenen modsuz özellik sayfaları. İstenen düğmeler kullanıcı tarafından oluşturulmalıdır.
Kalıcı özellik sayfası görüntülemek için bunun yerine çağrısı DoModal
yapın.
Örnek
// 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
Kalıcı bir özellik sayfası görüntüler.
virtual INT_PTR DoModal();
Dönüş Değeri
IDOK
veya IDCANCEL
işlevin başarılı olup olmadığını; aksi takdirde 0 veya -1. Özellik sayfası sihirbaz olarak oluşturulduysa (bkz. SetWizardMode
), DoModal
veya IDCANCEL
döndürürID_WIZFINISH
.
Açıklamalar
Dönüş değeri, özellik sayfasını kapatan denetimin kimliğine karşılık gelir. Bu işlev döndürdüğünde, özellik sayfasına ve tüm sayfalara karşılık gelen pencereler yok edilmiş olur. Nesneler yine de var olur. Genellikle, IDOK döndürdüğünde CPropertyPage
DoModal
nesnelerden veri alırsınız.
Modsuz özellik sayfası görüntülemek için bunun yerine çağrısı Create
yapın.
Bir özellik sayfası ilgili iletişim kutusu kaynağından oluşturulduğunda, ilk şans özel durumuna neden olabilir. Bu, özellik sayfasının, sayfa oluşturulmadan önce iletişim kutusu kaynağının stilini gerekli stile değiştirmesinden kaynaklanır. Kaynaklar genellikle salt okunur olduğundan, bu bir özel duruma neden olur. Sistem özel durumu işler ve değiştirilen kaynağın bir kopyasını oluşturur. Bu nedenle ilk şans özel durumu yoksayılabilir.
Not
Zaman uyumsuz özel durum işleme modeliyle derleniyorsanız, bu özel durum işletim sistemi tarafından işlenmelidir. Özel durum işleme modelleri hakkında daha fazla bilgi için bkz /EH
. (Özel Durum İşleme Modeli). Bu durumda, yakalamanın tüm özel durumları işlediği C++ try-catch bloğuyla çağrıları CPropertySheet::DoModal
sarmalamaz, örneğin, catch (...)
. Bu blok, işletim sistemine yönelik özel durumu işler ve öngörülemeyen davranışlara neden olur. Ancak, Erişim İhlali özel durumunun işletim sistemine geçirildiği belirli özel durum türleri veya yapılandırılmış özel durum işleme ile C++ özel durum işlemesini güvenle kullanabilirsiniz.
Bu ilk şans özel durumunu oluşturmaktan kaçınmak için, özellik sayfasının doğru Pencere Stillerine sahip olduğunu el ile garanti edebilirsiniz. Özellik sayfası için aşağıdaki stilleri ayarlamanız gerekir:
DS_3DLOOK
DS_CONTROL
WS_CHILD
WS_TABSTOP
İlk şans özel duruma neden olmadan aşağıdaki isteğe bağlı stilleri kullanabilirsiniz:
DS_SHELLFONT
DS_LOCALEDIT
WS_CLIPCHILDREN
Özellik sayfalarıyla uyumlu olmadıklarından diğer tüm Windows stillerini devre dışı bırakın. Bu öneri genişletilmiş stiller için geçerli değildir. Bu standart stillerin uygun şekilde ayarlanması, özellik sayfasının değiştirilmesi gerekmediğini garanti eder ve ilk şans özel durumunu oluşturmaktan kaçınacaktır.
Örnek
örneğine CPropertySheet::AddPage
bakın.
CPropertySheet::EnableStackedTabs
Özellik sayfasında sekme satırlarının yığılıp yığılmayacağını gösterir.
void EnableStackedTabs(BOOL bStacked);
Parametreler
bStacked
Özellik sayfasında yığılmış sekmelerin etkinleştirilip etkinleştirilmediğini gösterir. olarak ayarlayarak bStacked
FALSE
yığılmış etiket satırlarını devre dışı bırakın.
Açıklamalar
Varsayılan olarak, özellik sayfasında özellik sayfasının genişliğindeki tek bir satıra sığmayacak kadar çok sekme varsa, sekmeler birden çok satıra yığılır. Sekmeleri yığmak yerine kaydırma sekmelerini kullanmak için, veya Create
çağrısından DoModal
önce set FALSE
ile bStacked
çağrısı EnableStackedTabs
yapın.
Kalıcı veya modsuz özellik sayfası oluştururken aramanız EnableStackedTabs
gerekir. Bu stili türetilmiş bir CPropertySheet
sınıfa eklemek için için WM_CREATE
bir ileti işleyicisi yazın. geçersiz kılınan sürümünde CWnd::OnCreate
, temel sınıf uygulamasını çağırmadan önce öğesini çağırın EnableStackedTabs( FALSE )
.
Örnek
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
Özellik sayfasını sonlandırır.
void EndDialog(int nEndID);
Parametreler
nEndID
Özellik sayfasının dönüş değeri olarak kullanılacak tanımlayıcı.
Açıklamalar
Tamam, İptal veya Kapat düğmesine basıldığında bu üye işlevi çerçeve tarafından çağrılır. Özellik sayfasını kapatması gereken bir olay oluşursa bu üye işlevini çağırın.
Bu üye işlevi yalnızca kalıcı bir iletişim kutusuyla kullanılır.
Örnek
örneğine CPropertySheet::PressButton
bakın.
CPropertySheet::GetActiveIndex
Özellik sayfası penceresinin etkin sayfasının dizin numarasını alır ve ardından parametresi GetPage
olarak döndürülen dizin numarasını kullanır.
int GetActiveIndex() const;
Dönüş Değeri
Etkin sayfanın dizin numarası.
Örnek
örneğine CPropertySheet::GetActivePage
bakın.
CPropertySheet::GetActivePage
Özellik sayfası penceresinin etkin sayfasını alır.
CPropertyPage* GetActivePage() const;
Dönüş Değeri
Etkin sayfanın işaretçisi.
Açıklamalar
Etkin sayfada bazı eylemler gerçekleştirmek için bu üye işlevini kullanın.
Örnek
// 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
Bu özellik sayfasında belirtilen sayfaya bir işaretçi döndürür.
CPropertyPage* GetPage(int nPage) const;
Parametreler
nPage
0'dan başlayarak istenen sayfanın dizini. Özellik sayfasındaki sayfa sayısından (dahil) 0 ile bir arasında olmalıdır.
Dönüş Değeri
Parametresine karşılık gelen sayfanın işaretçisi nPage
.
Örnek
örneğine CPropertyPage::OnWizardFinish
bakın.
CPropertySheet::GetPageCount
Özellik sayfasında o anda bulunan sayfa sayısını belirler.
int GetPageCount() const;
Dönüş Değeri
Özellik sayfasındaki sayfa sayısı.
Örnek
örneğine CPropertyPage::OnWizardFinish
bakın.
CPropertySheet::GetPageIndex
Özellik sayfasında belirtilen sayfanın dizin numarasını alır.
int GetPageIndex(CPropertyPage* pPage);
Parametreler
pPage
Dizinin bulunacağı sayfayı gösterir. olamaz NULL
.
Dönüş Değeri
Bir sayfanın dizin numarası.
Açıklamalar
Örneğin, veya GetPage
kullanmak için sayfa dizinini almak için SetActivePage
kullanabilirsinizGetPageIndex
.
Örnek
örneğine CPropertySheet::GetActivePage
bakın.
CPropertySheet::GetTabControl
Sekme denetimine özgü bir şey yapmak için (içindeki API'lerden CTabCtrl
herhangi birini kullanmak için) bir sekme denetiminin işaretçisini alır.
CTabCtrl* GetTabControl() const;
Dönüş Değeri
Sekme denetiminin işaretçisi.
Açıklamalar
Örneğin, başlatma sırasında sekmelerin her birine bit eşlemler eklemek istiyorsanız bu üye işlevini çağırın.
Örnek
// 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
Üyeleri özelliklerini PROPSHEETHEADER
depolayan bir yapı.
Açıklamalar
Bu yapıyı, özellik sayfası, üye işleviyle DoModal
görüntülenmeden önce oluşturulurken görünümünü başlatmak için kullanın. Örneğin, öğesinin üyesini m_psh
özellik sayfasının sahip olmasını istediğiniz boyuta ayarlayındwSize
.
Üyelerinin listesi de dahil olmak üzere bu yapı hakkında daha fazla bilgi için Windows SDK'sına bakın PROPSHEETHEADER
.
Örnek
// 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
Dikdörtgenin iletişim kutusu birimlerini ekran birimlerine dönüştürür.
void MapDialogRect(LPRECT lpRect) const;
Parametreler
lpRect
Dönüştürülecek iletişim kutusu koordinatlarını içeren bir RECT
yapıya veya CRect
nesneye işaret eder.
Açıklamalar
İletişim kutusu birimleri, iletişim kutusu metni için kullanılan yazı tipindeki karakterlerin ortalama genişliği ve yüksekliğinden türetilen geçerli iletişim kutusu temel birimi açısından belirtilir. Yatay birimlerden biri iletişim kutusu taban genişlik biriminin dörtte biri, dikey birim ise iletişim kutusu taban yükseklik biriminin sekizde biridir.
GetDialogBaseUnits
Windows işlevi sistem yazı tipi için boyut bilgilerini döndürür, ancak kaynak tanımı dosyasında DS_SETFONT stilini kullanırsanız her özellik sayfası için farklı bir yazı tipi belirtebilirsiniz. MapDialogRect
Windows SDK'sında açıklanan Windows işlevi, bu iletişim kutusu için uygun yazı tipini kullanır.
MapDialogRect
Üye işlevi, içindeki iletişim kutusu birimlerini lpRect
ekran birimleriyle (piksel) değiştirir, böylece dikdörtgen bir iletişim kutusu oluşturmak veya bir denetimi bir kutunun içine yerleştirmek için kullanılabilir.
CPropertySheet::OnInitDialog
Özellik sayfası başlatmayı artırmak için geçersiz kılar.
virtual BOOL OnInitDialog();
Dönüş Değeri
Uygulamanın giriş odağını özellik sayfasındaki denetimlerden birine ayarlayıp ayarlamadığını belirtir. Sıfır olmayan döndürürse OnInitDialog
, Windows giriş odağını özellik sayfasındaki ilk denetime ayarlar. Uygulama yalnızca giriş odağını açıkça özellik sayfasındaki denetimlerden birine ayarlamışsa 0 döndürebilir.
Açıklamalar
Bu üye işlevi iletiye yanıt olarak çağrılır WM_INITDIALOG
. Bu ileti, özellik sayfası görüntülenmeden hemen önce gerçekleşen veya DoModal
çağrıları sırasında Create
özellik sayfasına gönderilir.
Özellik sayfası başlatıldığında özel işlem yapmanız gerekiyorsa bu üye işlevini geçersiz kılın. Geçersiz kılınan sürümde, önce temel sınıfı OnInitDialog
çağırın, ancak dönüş değerini göz ardı edin. Normalde geçersiz kılınan üye işlevinizden geri dönersiniz TRUE
.
Bu üye işlevi için ileti eşleme girdisi gerekmez.
CPropertySheet::PressButton
Bir özellik sayfasında belirtilen düğme seçiminin benzetimini oluşturur.
void PressButton(int nButton);
Parametreler
nButton
nButton
: Basılacak düğmeyi tanımlar. Bu parametre aşağıdaki değerlerden biri olabilir:
PSBTN_BACK
Geri düğmesini seçer.PSBTN_NEXT
İleri düğmesini seçer.PSBTN_FINISH
Son düğmesini seçer.PSBTN_OK
Tamam düğmesini seçer.PSBTN_APPLYNOW
Şimdi Uygula düğmesini seçer.PSBTN_CANCEL
İptal düğmesini seçer.PSBTN_HELP
Yardım düğmesini seçer.
Açıklamalar
Windows SDK Pressbutton iletisi hakkında daha fazla bilgi için bkz PSM_PRESSBUTTON
.
çağrısı PressButton
, bir özellik sayfasından PSN_APPLY
çerçeveye bildirim göndermez. Bu bildirimi göndermek için öğesini arayın CPropertyPage::OnOK
.
Örnek
// 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
Özellik sayfasından bir sayfa kaldırır ve ilişkili pencereyi yok eder.
void RemovePage(CPropertyPage* pPage);
void RemovePage(int nPage);
Parametreler
pPage
Özellik sayfasından kaldırılacak sayfayı gösterir. olamaz NULL
.
nPage
Kaldırılacak sayfanın dizini. Özellik sayfasındaki sayfa sayısından (dahil) 0 ile bir arasında olmalıdır.
Açıklamalar
Pencerenin CPropertyPage
sahibi kapatılana kadar nesnenin CPropertySheet
kendisi yok olmaz.
CPropertySheet::SetActivePage
Etkin sayfayı değiştirir.
BOOL SetActivePage(int nPage);
BOOL SetActivePage(CPropertyPage* pPage);
Parametreler
nPage
Ayarlanacağı sayfanın dizini. Özellik sayfasındaki sayfa sayısından (dahil) 0 ile bir arasında olmalıdır.
pPage
Özellik sayfasında ayarlanacağı sayfayı gösterir. olamaz NULL
.
Dönüş Değeri
Özellik sayfası başarıyla etkinleştirilirse sıfır olmayan; aksi takdirde 0.
Açıklamalar
Örneğin, bir kullanıcının bir sayfadaki eyleminin başka bir sayfanın etkin sayfa olmasına neden olması gerekiyorsa kullanın SetActivePage
.
Örnek
örneğine CPropertySheet::GetActivePage
bakın.
CPropertySheet::SetFinishText
Son komut düğmesindeki metni ayarlar.
void SetFinishText(LPCTSTR lpszText);
Parametreler
lpszText
Son komut düğmesinde görüntülenecek metni gösterir.
Açıklamalar
Son komut düğmesinde metni görüntülemek ve kullanıcı sihirbazın son sayfasındaki eylemi tamamladıktan sonra İleri ve Geri düğmelerini gizlemek için çağrısı SetFinishText
.
Örnek
// 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
Özellik sayfasının resim yazısını (çerçeve penceresinin başlık çubuğunda görüntülenen metin) belirtir.
void SetTitle(
LPCTSTR lpszText,
UINT nStyle = 0);
Parametreler
nStyle
Özellik sayfası başlığının stilini belirtir. Stil 0 veya olarak PSH_PROPTITLE
belirtilmelidir. Stil olarak PSH_PROPTITLE
ayarlanırsa, resim yazısı olarak belirtilen metinden sonra "Özellikler" sözcüğü görünür. Örneğin, ("Basit", PSH_PROPTITLE
) çağrısıSetTitle
"Basit Özellikler" özellik sayfası başlığıyla sonuçlanır.
lpszText
Özellik sayfasının başlık çubuğunda resim yazısı olarak kullanılacak metne işaret eder.
Açıklamalar
Varsayılan olarak, özellik sayfası özellik sayfası oluşturucusunda caption parametresini kullanır.
Örnek
// 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
Sihirbaz özellik sayfasında Geri, İleri veya Son düğmesini etkinleştirir veya devre dışı bırakır.
void SetWizardButtons(DWORD dwFlags);
Parametreler
dwFlags
Sihirbaz düğmelerinin işlevini ve görünümünü özelleştiren bir dizi bayrak. Bu parametre aşağıdaki değerlerin bir bileşimi olabilir:
PSWIZB_BACK
Geri düğmesiPSWIZB_NEXT
İleri düğmesiPSWIZB_FINISH
Son düğmesiPSWIZB_DISABLEDFINISH
Devre Dışı Son düğmesi
Açıklamalar
Yalnızca iletişim kutusu açıldıktan sonra ara SetWizardButtons
; aramadan önce arayamazsınız SetWizardButtons
DoModal
. Genellikle, içinden CPropertyPage::OnSetActive
aramanız SetWizardButtons
gerekir.
Son düğmesindeki metni değiştirmek veya kullanıcı sihirbazı tamamladıktan sonra İleri ve Geri düğmelerini gizlemek istiyorsanız öğesini çağırın SetFinishText
. Bitiş ve İleri için aynı düğmenin paylaşıldığını unutmayın. Son veya Sonraki düğmesini tek seferde görüntüleyebilirsiniz, ancak ikisini birden görüntüleyebilirsiniz.
Örnek
A'nın CPropertySheet
üç sihirbaz özelliği sayfası vardır: CStylePage
, CColorPage
ve CShapePage
. Aşağıdaki kod parçası, sihirbaz özellik sayfasında Geri ve Sonraki düğmelerini etkinleştirmeyi ve devre dışı bırakmayı gösterir.
// 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
Sihirbaz olarak bir özellik sayfası oluşturur.
void SetWizardMode();
Açıklamalar
Sihirbaz özellik sayfasının temel özelliklerinden biri, kullanıcının sekmeler yerine İleri veya Son, Geri ve İptal düğmelerini kullanarak gezinmesidir.
çağrısına başlamadan önce arayın SetWizardMode
DoModal
. çağrısı SetWizardMode
yaptıktan sonra , DoModal
(kullanıcı Son düğmesiyle kapatılırsa) veya IDCANCEL
döndürür ID_WIZFINISH
.
SetWizardMode
bayrağını PSH_WIZARD
ayarlar.
Örnek
CPropertySheet sheet(_T("Simple PropertySheet"));
CStylePage pageStyle;
CColorPage pageColor;
CShapePage pageShape;
sheet.AddPage(&pageStyle);
sheet.AddPage(&pageColor);
sheet.AddPage(&pageShape);
sheet.SetWizardMode();
sheet.DoModal();
Ayrıca bkz.
MFC Örneği CMNCTRL1
MFC Örneği CMNCTRL2
MFC Örneği PROPDLG
MFC Örneği SNAPVW
CWnd
Sınıf
Hiyerarşi Grafiği