Bagikan melalui


CPropertySheet Kelas

Mewakili lembar properti, juga dikenal sebagai kotak dialog tab.

Sintaks

class CPropertySheet : public CWnd

Anggota

Konstruktor Publik

Nama Deskripsi
CPropertySheet::CPropertySheet Membuat CPropertySheet objek.

Metode Publik

Nama Deskripsi
CPropertySheet::AddPage Menambahkan halaman ke lembar properti.
CPropertySheet::Construct Membuat CPropertySheet objek.
CPropertySheet::Create Menampilkan lembar properti tanpa mode.
CPropertySheet::DoModal Menampilkan lembar properti modal.
CPropertySheet::EnableStackedTabs Menunjukkan apakah lembar properti menggunakan tab bertumpuk atau bergulir.
CPropertySheet::EndDialog Mengakhiri lembar properti.
CPropertySheet::GetActiveIndex Mengambil indeks halaman aktif lembar properti.
CPropertySheet::GetActivePage Mengembalikan objek halaman aktif.
CPropertySheet::GetPage Mengambil penunjuk ke halaman yang ditentukan.
CPropertySheet::GetPageCount Mengambil jumlah halaman dalam lembar properti.
CPropertySheet::GetPageIndex Mengambil indeks halaman yang ditentukan dari lembar properti.
CPropertySheet::GetTabControl Mengambil penunjuk ke kontrol tab.
CPropertySheet::MapDialogRect Mengonversi unit kotak dialog persegi menjadi unit layar.
CPropertySheet::OnInitDialog Ambil alih untuk menambah inisialisasi lembar properti.
CPropertySheet::PressButton Mensimulasikan pilihan tombol yang ditentukan dalam lembar properti.
CPropertySheet::RemovePage Menghapus halaman dari lembar properti.
CPropertySheet::SetActivePage Secara terprogram mengatur objek halaman aktif.
CPropertySheet::SetFinishText Mengatur teks untuk tombol Selesai.
CPropertySheet::SetTitle Mengatur keterangan lembar properti.
CPropertySheet::SetWizardButtons Mengaktifkan tombol wizard.
CPropertySheet::SetWizardMode Mengaktifkan mode wizard.

Anggota Data Publik

Nama Deskripsi
CPropertySheet::m_psh Struktur Windows PROPSHEETHEADER . Menyediakan akses ke parameter lembar properti dasar.

Keterangan

Lembar properti terdiri dari CPropertySheet objek dan satu atau beberapa CPropertyPage objek. Kerangka kerja menampilkan lembar properti sebagai jendela dengan sekumpulan indeks tab dan area yang berisi halaman yang saat ini dipilih. Pengguna menavigasi ke halaman tertentu dengan menggunakan tab yang sesuai.

CPropertySheet menyediakan dukungan untuk struktur yang diperluas PROPSHEETHEADER yang diperkenalkan di Windows 98 dan Windows NT 2000. Struktur berisi bendera dan anggota tambahan yang mendukung penggunaan bitmap latar belakang "marka air".

Untuk menampilkan gambar baru ini secara otomatis di objek lembar properti Anda, berikan nilai yang valid untuk bitmap dan palet gambar dalam panggilan ke CPropertySheet::Construct atau CPropertySheet::CPropertySheet.

Meskipun CPropertySheet tidak berasal dari CDialog, mengelola CPropertySheet objek seperti mengelola CDialog objek. Misalnya, pembuatan lembar properti memerlukan konstruksi dua bagian: panggil konstruktor, lalu panggil DoModal lembar properti modal atau Create untuk lembar properti tanpa mode. CPropertySheet memiliki dua jenis konstruktor: CPropertySheet::Construct dan CPropertySheet::CPropertySheet.

Saat Anda membuat CPropertySheet objek, beberapa Gaya Jendela dapat menyebabkan pengecualian kesempatan pertama terjadi. Hasil ini dari sistem yang mencoba mengubah gaya lembar properti sebelum lembar dibuat. Untuk menghindari pengecualian ini, pastikan Anda mengatur gaya berikut saat membuat CPropertySheet:

  • DS_3DLOOK

  • DS_CONTROL

  • WS_CHILD

  • WS_TABSTOP

Gaya berikut bersifat opsional, dan tidak akan menyebabkan pengecualian kesempatan pertama:

  • DS_SHELLFONT

  • DS_LOCALEDIT

  • WS_CLIPCHILDREN

Yang lain Window Styles dilarang dan Anda tidak boleh mengaktifkannya.

Bertukar data antara CPropertySheet objek dan objek eksternal mirip dengan bertukar data dengan CDialog objek. Perbedaan pentingnya adalah bahwa pengaturan lembar properti biasanya merupakan variabel anggota objek CPropertyPage daripada objek itu CPropertySheet sendiri.

Anda bisa membuat tipe kotak dialog tab yang disebut wizard, yang terdiri dari lembar properti dengan urutan halaman properti yang memandu pengguna melalui langkah-langkah operasi, seperti menyiapkan perangkat atau membuat buletin. Dalam kotak dialog tab jenis panduan, halaman properti tidak memiliki tab, dan hanya satu halaman properti yang terlihat pada satu waktu. Selain itu, alih-alih memiliki tombol OK dan Terapkan Sekarang , kotak dialog tab jenis wizard memiliki tombol Kembali , tombol Berikutnya atau Selesai , tombol Batal , dan tombol Bantuan .

Untuk membuat kotak dialog jenis wizard, ikuti langkah yang sama yang akan Anda ikuti untuk membuat lembar properti standar, tetapi panggil SetWizardMode sebelum Anda memanggil DoModal. Untuk mengaktifkan tombol wizard, panggil SetWizardButtons, menggunakan bendera untuk menyesuaikan fungsi dan tampilannya. Untuk mengaktifkan tombol Selesai , panggil SetFinishText setelah pengguna mengambil tindakan pada halaman terakhir wizard.

Untuk informasi selengkapnya tentang cara menggunakan CPropertySheet objek, lihat artikel Lembar Properti dan Halaman Properti.

Hierarki Warisan

CObject

CCmdTarget

CWnd

CPropertySheet

Persyaratan

Header: afxdlgs.h

CPropertySheet::AddPage

Menambahkan halaman yang disediakan dengan tab paling kanan di lembar properti.

void AddPage(CPropertyPage* pPage);

Parameter

pPage
Arahkan ke halaman yang akan ditambahkan ke lembar properti. Tidak bisa menjadi NULL.

Keterangan

Tambahkan halaman ke lembar properti dalam urutan kiri-ke-kanan yang Anda inginkan untuk muncul.

AddPageCPropertyPage menambahkan objek ke CPropertySheet daftar halaman objek tetapi tidak benar-benar membuat jendela untuk halaman. Kerangka kerja menunda pembuatan jendela untuk halaman hingga pengguna memilih halaman tersebut.

Saat Anda menambahkan halaman properti menggunakan AddPage, CPropertySheet adalah induk dari CPropertyPage. Untuk mendapatkan akses ke lembar properti dari halaman properti, panggil CWnd::GetParent.

Tidak perlu menunggu sampai pembuatan jendela lembar properti untuk memanggil AddPage. Biasanya, Anda akan menelepon AddPage sebelum memanggil DoModal atau Create.

Jika Anda memanggil AddPage setelah menampilkan halaman properti, baris tab akan mencerminkan halaman yang baru ditambahkan.

Contoh

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

Membuat CPropertySheet objek.

void Construct(
    UINT nIDCaption,
    CWnd* pParentWnd = NULL,
    UINT iSelectPage = 0);

void Construct(
    LPCTSTR pszCaption,
    CWnd* pParentWnd = NULL,
    UINT iSelectPage = 0);

void Construct(
    UINT nIDCaption,
    CWnd* pParentWnd,
    UINT iSelectPage,
    HBITMAP hbmWatermark,
    HPALETTE hpalWatermark = NULL,
    HBITMAP hbmHeader = NULL);

void Construct(
    LPCTSTR pszCaption,
    CWnd* pParentWnd,
    UINT iSelectPage,
    HBITMAP hbmWatermark,
    HPALETTE hpalWatermark = NULL,
    HBITMAP hbmHeader = NULL);

Parameter

nIDCaption
ID keterangan yang akan digunakan untuk lembar properti.

pParentWnd
Penunjuk ke jendela induk lembar properti. Jika NULL, jendela induk akan menjadi jendela utama aplikasi.

iSelectPage
Indeks halaman yang awalnya akan berada di atas. Defaultnya adalah halaman pertama yang ditambahkan ke lembar.

pszCaption
Penunjuk ke string yang berisi keterangan yang akan digunakan untuk lembar properti. Tidak bisa menjadi NULL.

hbmWatermark
Tangani ke bitmap marka air halaman properti.

hpalWatermark
Tangani ke palet bitmap marka air dan/atau bitmap header.

hbmHeader
Tangani ke bitmap header halaman properti.

Keterangan

Panggil fungsi anggota ini jika salah satu konstruktor kelas belum dipanggil. Misalnya, panggil Construct saat Anda mendeklarasikan atau mengalokasikan array CPropertySheet objek. Dalam kasus array, Anda harus memanggil Construct setiap anggota dalam array.

Untuk menampilkan lembar properti, panggil DoModal atau Create. String yang terkandung dalam parameter pertama akan ditempatkan di bilah keterangan untuk lembar properti.

Anda dapat menampilkan gambar marka air dan/atau header secara otomatis jika Anda menggunakan prototipe ketiga atau keempat dari Construct, yang tercantum di atas, dan Anda meneruskan nilai yang valid untuk hbmWatermarkparameter , , hpalWatermarkdan/atau hbmHeader .

Contoh

Contoh berikut menunjukkan dalam keadaan apa yang akan Anda panggil 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

Membuat CPropertySheet objek.

CPropertySheet();

explicit CPropertySheet(
    UINT nIDCaption,
    CWnd* pParentWnd = NULL,
    UINT iSelectPage = 0);

explicit CPropertySheet(
    LPCTSTR pszCaption,
    CWnd* pParentWnd = NULL,
    UINT iSelectPage = 0);

CPropertySheet(
    UINT nIDCaption,
    CWnd* pParentWnd,
    UINT iSelectPage,
    HBITMAP hbmWatermark,
    HPALETTE hpalWatermark = NULL,
    HBITMAP hbmHeader = NULL);

CPropertySheet(
    LPCTSTR pszCaption,
    CWnd* pParentWnd,
    UINT iSelectPage,
    HBITMAP hbmWatermark,
    HPALETTE hpalWatermark = NULL,
    HBITMAP hbmHeader = NULL);

Parameter

nIDCaption
ID keterangan yang akan digunakan untuk lembar properti.

pParentWnd
Menunjuk ke jendela induk lembar properti. Jika NULL, jendela induk akan menjadi jendela utama aplikasi.

iSelectPage
Indeks halaman yang awalnya akan berada di atas. Defaultnya adalah halaman pertama yang ditambahkan ke lembar.

pszCaption
Menunjuk ke string yang berisi keterangan yang akan digunakan untuk lembar properti. Tidak bisa menjadi NULL.

hbmWatermark
Handel ke bitmap latar belakang lembar properti.

hpalWatermark
Handel ke palet bitmap marka air dan/atau bitmap header.

hbmHeader
Handel ke bitmap header halaman properti.

Keterangan

Untuk menampilkan lembar properti, panggil DoModal atau Create. String yang terkandung dalam parameter pertama akan ditempatkan di bilah keterangan untuk lembar properti.

Jika Anda memiliki beberapa parameter (misalnya, jika Anda menggunakan array), gunakan Construct alih-alih CPropertySheet.

Anda dapat menampilkan gambar marka air dan/atau header secara otomatis jika Anda menggunakan prototipe ketiga atau keempat dari CPropertySheet, di atas, dan Anda meneruskan nilai yang valid untuk hbmWatermarkparameter , , hpalWatermarkdan/atau hbmHeader .

Contoh

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

Menampilkan lembar properti tanpa mode.

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

Parameter

pParentWnd
Menunjuk ke jendela induk. Jika NULL, induk adalah desktop.

dwStyle
Gaya jendela untuk lembar properti. Untuk daftar lengkap gaya yang tersedia, lihat Gaya Jendela.

dwExStyle
Gaya jendela yang diperluas untuk lembar properti. Untuk daftar lengkap gaya yang tersedia, lihat Gaya Jendela yang Diperluas

Tampilkan Nilai

Bukan nol jika lembar properti berhasil dibuat; jika tidak, 0.

Keterangan

Panggilan ke Create dapat berada di dalam konstruktor, atau Anda dapat memanggilnya setelah konstruktor dipanggil.

Gaya default, yang dinyatakan dengan meneruskan -1 sebagai dwStyle, sebenarnya WS_SYSMENU|WS_POPUP|WS_CAPTION|DS_MODALFRAME|DS_CONTEXTHELP|WS_VISIBLEadalah . Gaya jendela diperluas default, yang dinyatakan dengan meneruskan 0 sebagai dwExStyle, sebenarnya WS_EX_DLGMODALFRAMEadalah .

Fungsi Create anggota kembali segera setelah membuat lembar properti. Untuk menghancurkan lembar properti, panggil CWnd::DestroyWindow.

Lembar properti modeless ditampilkan dengan panggilan untuk Create tidak memiliki tombol OK, Batalkan, Terapkan Sekarang, dan Bantuan seperti yang dilakukan lembar properti modal. Tombol yang diinginkan harus dibuat oleh pengguna.

Untuk menampilkan lembar properti modal, panggil DoModal sebagai gantinya.

Contoh

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

Menampilkan lembar properti modal.

virtual INT_PTR DoModal();

Tampilkan Nilai

IDOK atau IDCANCEL jika fungsi berhasil; jika tidak, 0 atau -1. Jika lembar properti telah ditetapkan sebagai wizard (lihat SetWizardMode), DoModal mengembalikan baik ID_WIZFINISH atau IDCANCEL.

Keterangan

Nilai pengembalian sesuai dengan ID kontrol yang menutup lembar properti. Setelah fungsi ini kembali, jendela yang sesuai dengan lembar properti dan semua halaman akan dihancurkan. Objek itu sendiri masih akan ada. Biasanya, Anda akan mengambil data dari CPropertyPage objek setelah DoModal mengembalikan IDOK.

Untuk menampilkan lembar properti tanpa mode, panggil Create sebagai gantinya.

Saat halaman properti dibuat dari sumber daya dialog yang sesuai, halaman tersebut dapat menyebabkan pengecualian kesempatan pertama. Hasil ini dari halaman properti yang mengubah gaya sumber daya dialog ke gaya yang diperlukan sebelum halaman dibuat. Karena sumber daya umumnya baca-saja, ini menyebabkan pengecualian. Sistem menangani pengecualian, dan membuat salinan sumber daya yang dimodifikasi. Oleh karena itu, pengecualian kesempatan pertama dapat diabaikan.

Catatan

Pengecualian ini harus ditangani oleh sistem operasi jika Anda mengompilasi dengan model penanganan pengecualian asinkron. Untuk informasi selengkapnya tentang model penanganan pengecualian, lihat /EH (Model Penanganan Pengecualian). Dalam hal ini, jangan membungkus panggilan ke CPropertySheet::DoModal dengan blok try-catch C++ di mana tangkapan menangani semua pengecualian, misalnya, catch (...). Blok ini akan menangani pengecualian yang ditujukan untuk sistem operasi, dan menyebabkan perilaku yang tidak dapat diprediksi. Namun, Anda dapat dengan aman menggunakan penanganan pengecualian C++ dengan jenis pengecualian tertentu atau penanganan pengecualian terstruktur di mana pengecualian Pelanggaran Akses diteruskan ke sistem operasi.

Untuk menghindari menghasilkan pengecualian kesempatan pertama ini, Anda dapat secara manual menjamin bahwa lembar properti memiliki Gaya Jendela yang benar. Anda perlu mengatur gaya berikut untuk lembar properti:

  • DS_3DLOOK

  • DS_CONTROL

  • WS_CHILD

  • WS_TABSTOP

Anda dapat menggunakan gaya opsional berikut tanpa menyebabkan pengecualian kesempatan pertama:

  • DS_SHELLFONT

  • DS_LOCALEDIT

  • WS_CLIPCHILDREN

Nonaktifkan semua gaya Windows lainnya karena tidak kompatibel dengan lembar properti. Saran ini tidak berlaku untuk gaya yang diperluas. Mengatur gaya standar ini dengan tepat akan menjamin bahwa lembar properti tidak harus dimodifikasi dan akan menghindari menghasilkan pengecualian kesempatan pertama.

Contoh

Lihat contoh untuk CPropertySheet::AddPage.

CPropertySheet::EnableStackedTabs

Menunjukkan apakah akan menumpuk baris tab dalam lembar properti.

void EnableStackedTabs(BOOL bStacked);

Parameter

bStacked
Menunjukkan apakah tab bertumpuk diaktifkan di lembar properti. Nonaktifkan baris tag bertumpuk dengan mengatur bStacked ke FALSE.

Keterangan

Secara default, jika lembar properti memiliki lebih banyak tab daripada yang akan pas dalam satu baris dalam lebar lembar properti, tab akan ditumpuk dalam beberapa baris. Untuk menggunakan tab gulir alih-alih menumpuk tab, panggil EnableStackedTabs dengan bStacked atur ke FALSE sebelum memanggil DoModal atau Create.

Anda harus memanggil EnableStackedTabs saat membuat lembar properti modal atau tanpa mode. Untuk menggabungkan gaya ini di CPropertySheetkelas -turunan, tulis handler pesan untuk WM_CREATE. Dalam versi yang ditimpa , CWnd::OnCreatepanggil EnableStackedTabs( FALSE ) sebelum memanggil implementasi kelas dasar.

Contoh

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

Mengakhiri lembar properti.

void EndDialog(int nEndID);

Parameter

nEndID
Pengidentifikasi yang akan digunakan sebagai nilai pengembalian lembar properti.

Keterangan

Fungsi anggota ini dipanggil oleh kerangka kerja ketika tombol OK, Batal, atau Tutup ditekan. Panggil fungsi anggota ini jika terjadi peristiwa yang harus menutup lembar properti.

Fungsi anggota ini hanya digunakan dengan kotak dialog modal.

Contoh

Lihat contoh untuk CPropertySheet::PressButton.

CPropertySheet::GetActiveIndex

Mendapatkan nomor indeks halaman aktif jendela lembar properti lalu menggunakan nomor indeks yang dikembalikan sebagai parameter untuk GetPage.

int GetActiveIndex() const;

Tampilkan Nilai

Nomor indeks halaman aktif.

Contoh

Lihat contoh untuk CPropertySheet::GetActivePage.

CPropertySheet::GetActivePage

Mengambil halaman aktif jendela lembar properti.

CPropertyPage* GetActivePage() const;

Tampilkan Nilai

Penunjuk ke halaman aktif.

Keterangan

Gunakan fungsi anggota ini untuk melakukan beberapa tindakan di halaman aktif.

Contoh

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

Mengembalikan penunjuk ke halaman yang ditentukan dalam lembar properti ini.

CPropertyPage* GetPage(int nPage) const;

Parameter

nPage
Indeks halaman yang diinginkan, mulai dari 0. Harus antara 0 dan satu kurang dari jumlah halaman dalam lembar properti, inklusif.

Tampilkan Nilai

Penunjuk ke halaman yang nPage sesuai dengan parameter .

Contoh

Lihat contoh untuk CPropertyPage::OnWizardFinish.

CPropertySheet::GetPageCount

Menentukan jumlah halaman yang saat ini ada di lembar properti.

int GetPageCount() const;

Tampilkan Nilai

Jumlah halaman dalam lembar properti.

Contoh

Lihat contoh untuk CPropertyPage::OnWizardFinish.

CPropertySheet::GetPageIndex

Mengambil nomor indeks halaman yang ditentukan dalam lembar properti.

int GetPageIndex(CPropertyPage* pPage);

Parameter

pPage
Arahkan ke halaman dengan indeks yang akan ditemukan. Tidak bisa menjadi NULL.

Tampilkan Nilai

Nomor indeks halaman.

Keterangan

Misalnya, Anda akan menggunakan GetPageIndex untuk mendapatkan indeks halaman untuk menggunakan SetActivePage atau GetPage.

Contoh

Lihat contoh untuk CPropertySheet::GetActivePage.

CPropertySheet::GetTabControl

Mengambil penunjuk ke kontrol tab untuk melakukan sesuatu yang spesifik untuk kontrol tab (yaitu, untuk menggunakan SALAH SATU API di CTabCtrl).

CTabCtrl* GetTabControl() const;

Tampilkan Nilai

Penunjuk ke kontrol tab.

Keterangan

Misalnya, panggil fungsi anggota ini jika Anda ingin menambahkan bitmap ke setiap tab selama inisialisasi.

Contoh

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

Struktur yang anggotanya menyimpan karakteristik PROPSHEETHEADER.

Keterangan

Gunakan struktur ini untuk menginisialisasi tampilan lembar properti setelah dibuat tetapi sebelum ditampilkan dengan DoModal fungsi anggota. Misalnya, atur dwSize anggota m_psh ke ukuran yang Anda inginkan untuk dimiliki lembar properti.

Untuk informasi selengkapnya tentang struktur ini, termasuk daftar anggotanya, lihat PROPSHEETHEADER di Windows SDK.

Contoh

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

Mengonversi unit kotak dialog persegi menjadi unit layar.

void MapDialogRect(LPRECT lpRect) const;

Parameter

lpRect
Arahkan ke RECT struktur atau CRect objek yang berisi koordinat kotak dialog yang akan dikonversi.

Keterangan

Unit kotak dialog dinyatakan dalam hal unit dasar kotak dialog saat ini yang berasal dari lebar rata-rata dan tinggi karakter dalam font yang digunakan untuk teks kotak dialog. Satu unit horizontal adalah sebelas dari unit lebar dasar kotak dialog, dan satu unit vertikal adalah satu perdelapan dari unit tinggi dasar kotak dialog.

Fungsi GetDialogBaseUnits Windows mengembalikan informasi ukuran untuk font sistem, tetapi Anda dapat menentukan font yang berbeda untuk setiap lembar properti jika Anda menggunakan gaya DS_SETFONT dalam file definisi sumber daya. Fungsi MapDialogRect Windows, yang dijelaskan dalam Windows SDK, menggunakan font yang sesuai untuk kotak dialog ini.

Fungsi MapDialogRect anggota menggantikan unit kotak dialog di lpRect dengan unit layar (piksel) sehingga persegi panjang dapat digunakan untuk membuat kotak dialog atau memosisikan kontrol dalam kotak.

CPropertySheet::OnInitDialog

Mengambil alih untuk menambah inisialisasi lembar properti.

virtual BOOL OnInitDialog();

Tampilkan Nilai

Menentukan apakah aplikasi telah mengatur fokus input ke salah satu kontrol dalam lembar properti. Jika OnInitDialog mengembalikan nonzero, Windows mengatur fokus input ke kontrol pertama dalam lembar properti. Aplikasi dapat mengembalikan 0 hanya jika telah secara eksplisit mengatur fokus input ke salah satu kontrol dalam lembar properti.

Keterangan

Fungsi anggota ini dipanggil sebagai respons terhadap WM_INITDIALOG pesan. Pesan ini dikirim ke lembar properti selama Create panggilan atau DoModal , yang terjadi segera sebelum lembar properti ditampilkan.

Ambil alih fungsi anggota ini jika Anda perlu melakukan pemrosesan khusus saat lembar properti diinisialisasi. Dalam versi yang ditimpa, pertama-tama panggil kelas OnInitDialog dasar tetapi abaikan nilai pengembaliannya. Anda biasanya akan kembali TRUE dari fungsi anggota yang ditimpa.

Anda tidak memerlukan entri peta pesan untuk fungsi anggota ini.

CPropertySheet::PressButton

Mensimulasikan pilihan tombol yang ditentukan dalam lembar properti.

void PressButton(int nButton);

Parameter

nButton
nButton : Mengidentifikasi tombol yang akan ditekan. Parameter ini bisa menjadi salah satu nilai berikut:

  • PSBTN_BACK Memilih tombol Kembali.

  • PSBTN_NEXT Memilih tombol Berikutnya.

  • PSBTN_FINISH Memilih tombol Selesai.

  • PSBTN_OK Memilih tombol OK.

  • PSBTN_APPLYNOW Memilih tombol Terapkan Sekarang.

  • PSBTN_CANCEL Memilih tombol Batalkan.

  • PSBTN_HELP Memilih tombol Bantuan.

Keterangan

Lihat PSM_PRESSBUTTON untuk informasi selengkapnya tentang pesan Windows SDK Pressbutton.

Panggilan ke PressButton tidak akan mengirim PSN_APPLY pemberitahuan dari halaman properti ke kerangka kerja. Untuk mengirim pemberitahuan ini, panggil CPropertyPage::OnOK.

Contoh

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

Menghapus halaman dari lembar properti dan menghancurkan jendela terkait.

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

Parameter

pPage
Menunjuk ke halaman yang akan dihapus dari lembar properti. Tidak bisa menjadi NULL.

nPage
Indeks halaman yang akan dihapus. Harus antara 0 dan satu kurang dari jumlah halaman dalam lembar properti, inklusif.

Keterangan

Objek CPropertyPage itu sendiri tidak dihancurkan sampai pemilik jendela CPropertySheet ditutup.

CPropertySheet::SetActivePage

Mengubah halaman aktif.

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

Parameter

nPage
Indeks halaman yang akan diatur. Ini harus antara 0 dan satu kurang dari jumlah halaman dalam lembar properti, inklusif.

pPage
Arahkan ke halaman untuk diatur dalam lembar properti. Tidak boleh NULL.

Tampilkan Nilai

Bukan nol jika lembar properti berhasil diaktifkan; jika tidak, 0.

Keterangan

Misalnya, gunakan SetActivePage jika tindakan pengguna di satu halaman harus menyebabkan halaman lain menjadi halaman aktif.

Contoh

Lihat contoh untuk CPropertySheet::GetActivePage.

CPropertySheet::SetFinishText

Mengatur teks di tombol Perintah selesai.

void SetFinishText(LPCTSTR lpszText);

Parameter

lpszText
Arahkan ke teks yang akan ditampilkan pada tombol Selesai.

Keterangan

Panggil SetFinishText untuk menampilkan teks pada tombol Selesaikan perintah dan sembunyikan tombol Berikutnya dan Kembali setelah pengguna menyelesaikan tindakan di halaman terakhir wizard.

Contoh

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

Menentukan keterangan lembar properti (teks yang ditampilkan di bilah judul jendela bingkai).

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

Parameter

nStyle
Menentukan gaya judul lembar properti. Gaya harus ditentukan pada 0 atau sebagai PSH_PROPTITLE. Jika gaya diatur sebagai PSH_PROPTITLE, kata "Properti" muncul setelah teks yang ditentukan sebagai keterangan. Misalnya, memanggil SetTitle("Sederhana", PSH_PROPTITLE) akan menghasilkan keterangan lembar properti "Properti Sederhana."

lpszText
Arahkan ke teks yang akan digunakan sebagai keterangan di bilah judul lembar properti.

Keterangan

Secara default, lembar properti menggunakan parameter keterangan di konstruktor lembar properti.

Contoh

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

Mengaktifkan atau menonaktifkan tombol Kembali, Berikutnya, atau Selesai di lembar properti wizard.

void SetWizardButtons(DWORD dwFlags);

Parameter

dwFlags
Sekumpulan bendera yang mengkustomisasi fungsi dan tampilan tombol wizard. Parameter ini bisa menjadi kombinasi dari nilai berikut:

  • PSWIZB_BACK Tombol Kembali

  • PSWIZB_NEXT Tombol Berikutnya

  • PSWIZB_FINISH Tombol Selesai

  • PSWIZB_DISABLEDFINISH Tombol Selesai Dinonaktifkan

Keterangan

Panggil SetWizardButtons hanya setelah dialog terbuka; Anda tidak dapat menelepon SetWizardButtons sebelum memanggil DoModal. Biasanya, Anda harus memanggil SetWizardButtons dari CPropertyPage::OnSetActive.

Jika Anda ingin mengubah teks pada tombol Selesai atau menyembunyikan tombol Berikutnya dan Kembali setelah pengguna menyelesaikan wizard, panggil SetFinishText. Perhatikan bahwa tombol yang sama dibagikan untuk Selesai dan Berikutnya. Anda dapat menampilkan tombol Selesai atau Berikutnya pada satu waktu, tetapi tidak keduanya.

Contoh

memiliki CPropertySheet tiga halaman properti wizard: CStylePage, , CColorPagedan CShapePage. Fragmen kode di bawah ini menunjukkan cara mengaktifkan dan menonaktifkan tombol Kembali dan Berikutnya pada halaman properti wizard.

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

Membuat halaman properti sebagai wizard.

void SetWizardMode();

Keterangan

Karakteristik utama halaman properti wizard adalah pengguna menavigasi menggunakan tombol Berikutnya atau Selesai, Kembali, dan Batal, bukan tab.

Panggil SetWizardMode sebelum memanggil DoModal. Setelah Anda memanggil SetWizardMode, DoModal akan mengembalikan ( ID_WIZFINISH jika pengguna menutup dengan tombol Selesai) atau IDCANCEL.

SetWizardModePSH_WIZARD mengatur bendera.

Contoh

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

CStylePage pageStyle;
CColorPage pageColor;
CShapePage pageShape;

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

sheet.SetWizardMode();

sheet.DoModal();

Lihat juga

Sampel MFC CMNCTRL1
Sampel MFC CMNCTRL2
Sampel MFC PROPDLG
Sampel MFC SNAPVW
CWnd Kelas
Bagan Hierarki