Aracılığıyla paylaş


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 CPropertySheetayarladığı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

CObject

CCmdTarget

CWnd

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.

AddPageCPropertyPage 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 AddPagebir ö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 AddPageiç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 Constructkullanırsanız ve , hpalWatermarkve/veya parametreleri için hbmWatermarkgeç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 Constructgö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 CPropertySheetkullanınConstruct.

Yukarıdaki öğesinin üçüncü veya dördüncü prototiplerini CPropertySheetkullanırsanız ve , hpalWatermarkve/veya parametreleri için hbmWatermarkgeç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 dwStyleolarak geçirilerek ifade edilen varsayılan stil aslında WS_SYSMENU|WS_POPUP|WS_CAPTION|DS_MODALFRAME|DS_CONTEXTHELP|WS_VISIBLEşeklindedir. 0 dwExStyledeğ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 IDCANCELdö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::AddPagebakı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 FALSEyığı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 CPropertySheetsınıfa eklemek için için WM_CREATEbir 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::PressButtonbakın.

CPropertySheet::GetActiveIndex

Özellik sayfası penceresinin etkin sayfasının dizin numarasını alır ve ardından parametresi GetPageolarak 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::GetActivePagebakı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::OnWizardFinishbakı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::OnWizardFinishbakı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 GetPagekullanmak için sayfa dizinini almak için SetActivePage kullanabilirsinizGetPageIndex.

Örnek

örneğine CPropertySheet::GetActivePagebakın.

CPropertySheet::GetTabControl

Sekme denetimine özgü bir şey yapmak için (içindeki API'lerden CTabCtrlherhangi 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 PROPSHEETHEADERdepolayan 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::GetActivePagebakı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_PROPTITLEbelirtilmelidir. Stil olarak PSH_PROPTITLEayarlanı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üğmesi

  • PSWIZB_NEXT İleri düğmesi

  • PSWIZB_FINISH Son düğmesi

  • PSWIZB_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::OnSetActivearamanı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, CColorPageve 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ı SetWizardModeyaptıktan sonra , DoModal (kullanıcı Son düğmesiyle kapatılırsa) veya IDCANCELdö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