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
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.
AddPage
CPropertyPage
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 hbmWatermark
parameter , , hpalWatermark
dan/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 hbmWatermark
parameter , , hpalWatermark
dan/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_VISIBLE
adalah . Gaya jendela diperluas default, yang dinyatakan dengan meneruskan 0 sebagai dwExStyle
, sebenarnya WS_EX_DLGMODALFRAME
adalah .
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 CPropertySheet
kelas -turunan, tulis handler pesan untuk WM_CREATE
. Dalam versi yang ditimpa , CWnd::OnCreate
panggil 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 KembaliPSWIZB_NEXT
Tombol BerikutnyaPSWIZB_FINISH
Tombol SelesaiPSWIZB_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
, , CColorPage
dan 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
.
SetWizardMode
PSH_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
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk