CPropertyPage
Kelas
Mewakili halaman individual lembar properti, atau dikenal sebagai kotak dialog tab.
Sintaks
class CPropertyPage : public CDialog
Anggota
Konstruktor Publik
Nama | Deskripsi |
---|---|
CPropertyPage::CPropertyPage |
Membuat CPropertyPage objek. |
Metode Publik
Nama | Deskripsi |
---|---|
CPropertyPage::CancelToClose |
Mengubah tombol OK untuk membaca Tutup, dan menonaktifkan tombol Batal, setelah perubahan yang tidak dapat dipulihkan di halaman lembar properti modal. |
CPropertyPage::Construct |
Membuat CPropertyPage objek. Gunakan Construct jika Anda ingin menentukan parameter pada waktu proses, atau jika Anda menggunakan array. |
CPropertyPage::GetPSP |
Mengambil struktur Windows PROPSHEETPAGE yang terkait dengan CPropertyPage objek. |
CPropertyPage::OnApply |
Dipanggil oleh kerangka kerja saat tombol Terapkan Sekarang diklik. |
CPropertyPage::OnCancel |
Dipanggil oleh kerangka kerja saat tombol Batal diklik. |
CPropertyPage::OnKillActive |
Dipanggil oleh kerangka kerja ketika halaman saat ini tidak lagi menjadi halaman aktif. Lakukan validasi data di sini. |
CPropertyPage::OnOK |
Dipanggil oleh kerangka kerja saat tombol OK, Terapkan Sekarang, atau Tutup diklik. |
CPropertyPage::OnQueryCancel |
Dipanggil oleh kerangka kerja saat tombol Batal diklik, dan sebelum pembatalan terjadi. |
CPropertyPage::OnReset |
Dipanggil oleh kerangka kerja saat tombol Batal diklik. |
CPropertyPage::OnSetActive |
Dipanggil oleh kerangka kerja ketika halaman dibuat menjadi halaman aktif. |
CPropertyPage::OnWizardBack |
Dipanggil oleh kerangka kerja saat tombol Kembali diklik saat menggunakan lembar properti jenis wizard. |
CPropertyPage::OnWizardFinish |
Dipanggil oleh kerangka kerja saat tombol Selesai diklik saat menggunakan lembar properti jenis wizard. |
CPropertyPage::OnWizardNext |
Dipanggil oleh kerangka kerja saat tombol Berikutnya diklik saat menggunakan lembar properti jenis wizard. |
CPropertyPage::QuerySiblings |
Meneruskan pesan ke setiap halaman lembar properti. |
CPropertyPage::SetModified |
Panggil untuk mengaktifkan atau menonaktifkan tombol Terapkan Sekarang . |
Anggota Data Publik
Nama | Deskripsi |
---|---|
CPropertyPage::m_psp |
Struktur Windows PROPSHEETPAGE . Menyediakan akses ke parameter halaman properti dasar. |
Keterangan
Seperti halnya kotak dialog standar, Anda mendapatkan kelas dari CPropertyPage
untuk setiap halaman di lembar properti Anda. Untuk menggunakan CPropertyPage
objek -turunan, pertama-tama buat CPropertySheet
objek, lalu buat objek untuk setiap halaman yang masuk ke lembar properti. Panggil CPropertySheet::AddPage
untuk setiap halaman dalam lembar, lalu tampilkan lembar properti dengan memanggil CPropertySheet::DoModal
lembar properti modal, atau CPropertySheet::Create
untuk lembar properti tanpa mode.
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 , dan tombol Batal .
Untuk informasi selengkapnya tentang membuat lembar properti sebagai wizard, lihat CPropertySheet::SetWizardMode
. Untuk informasi selengkapnya tentang menggunakan CPropertyPage
objek, lihat artikel Lembar Properti dan Halaman Properti.
Hierarki Warisan
CPropertyPage
Persyaratan
Header: afxdlgs.h
CPropertyPage::CancelToClose
Panggil fungsi ini setelah perubahan yang tidak dapat dipulihkan dilakukan pada data di halaman lembar properti modal.
void CancelToClose();
Keterangan
Fungsi ini akan mengubah tombol OK menjadi Tutup dan menonaktifkan tombol Batal . Perubahan ini memperingatkan pengguna bahwa perubahan bersifat permanen dan modifikasi tidak dapat dibatalkan.
Fungsi CancelToClose
anggota tidak melakukan apa pun dalam lembar properti tanpa mode, karena lembar properti tanpa mode tidak memiliki tombol Batal secara default.
Contoh
Lihat contoh untuk CPropertyPage::QuerySiblings.
CPropertyPage::Construct
Panggil fungsi anggota ini untuk membuat CPropertyPage
objek.
void Construct(
UINT nIDTemplate,
UINT nIDCaption = 0);
void Construct(
LPCTSTR lpszTemplateName,
UINT nIDCaption = 0);
void Construct(
UINT nIDTemplate,
UINT nIDCaption,
UINT nIDHeaderTitle,
UINT nIDHeaderSubTitle = 0);
void Construct(
LPCTSTR lpszTemplateName,
UINT nIDCaption,
UINT nIDHeaderTitle,
UINT nIDHeaderSubTitle = 0);
Parameter
nIDTemplate
ID templat yang digunakan untuk halaman ini.
nIDCaption
ID nama yang akan ditempatkan di tab untuk halaman ini. Jika 0, nama akan diambil dari templat dialog untuk halaman ini.
lpszTemplateName
Berisi string yang dihentikan null yang merupakan nama sumber daya templat.
nIDHeaderTitle
ID nama yang akan ditempatkan di lokasi judul header halaman properti. Secara default, 0.
nIDHeaderSubTitle
ID nama yang akan ditempatkan di lokasi subtitel header halaman properti. Secara default, 0.
Keterangan
Objek ditampilkan setelah semua kondisi berikut terpenuhi:
Halaman telah ditambahkan ke lembar properti menggunakan
CPropertySheet::AddPage
.Pengguna telah memilih (bertab ke) halaman ini.
Hubungi Construct
jika salah satu konstruktor kelas lainnya belum dipanggil. Fungsi Construct
anggota fleksibel karena Anda dapat membiarkan pernyataan parameter kosong lalu menentukan beberapa parameter dan konstruksi kapan saja dalam kode Anda.
Anda harus menggunakan Construct
saat bekerja dengan array, dan Anda harus memanggil Construct
setiap anggota array sehingga anggota data diberi nilai yang tepat.
Contoh
// Declare a CPropertySheet object.
CPropertySheet sheet(_T("Simple PropertySheet"));
// Create three CPropertyPage objects whose template IDs are specified
// in rgID array, and add each page to the CPropertySheet object.
const int c_cPages = 3;
CPropertyPage pages[c_cPages];
UINT rgID[c_cPages] = { IDD_STYLE, IDD_COLOR, IDD_SHAPE };
for (int i = 0; i < c_cPages; i++)
{
pages[i].Construct(rgID[i]);
sheet.AddPage(&pages[i]);
}
// Display a modal CPropertySheet dialog.
sheet.DoModal();
CPropertyPage::CPropertyPage
Membuat CPropertyPage
objek.
CPropertyPage();
explicit CPropertyPage(
UINT nIDTemplate,
UINT nIDCaption = 0,
DWORD dwSize = sizeof(PROPSHEETPAGE));
explicit CPropertyPage(
LPCTSTR lpszTemplateName,
UINT nIDCaption = 0,
DWORD dwSize = sizeof(PROPSHEETPAGE));
CPropertyPage(
UINT nIDTemplate,
UINT nIDCaption,
UINT nIDHeaderTitle,
UINT nIDHeaderSubTitle = 0,
DWORD dwSize = sizeof(PROPSHEETPAGE));
CPropertyPage(
LPCTSTR lpszTemplateName,
UINT nIDCaption,
UINT nIDHeaderTitle,
UINT nIDHeaderSubTitle = 0,
DWORD dwSize = sizeof(PROPSHEETPAGE));
Parameter
nIDTemplate
ID templat yang digunakan untuk halaman ini.
nIDCaption
ID nama yang akan ditempatkan di tab untuk halaman ini. Jika 0, nama akan diambil dari templat dialog untuk halaman ini.
dwSize
lpszTemplateName
Arahkan ke string yang berisi nama templat untuk halaman ini. Tidak boleh NULL
.
nIDHeaderTitle
ID nama yang akan ditempatkan di lokasi judul header halaman properti.
nIDHeaderSubTitle
ID nama yang akan ditempatkan di lokasi subtitel header halaman properti.
Keterangan
Objek ditampilkan setelah semua kondisi berikut terpenuhi:
Halaman telah ditambahkan ke lembar properti menggunakan
CPropertySheet::AddPage
.Pengguna telah memilih (bertab ke) halaman ini.
Jika Anda memiliki beberapa parameter (misalnya, jika Anda menggunakan array), gunakan CPropertySheet::Construct
alih-alih CPropertyPage
.
Contoh
// Declare a CStylePage object, which is a CPropertyPage-derived class.
CStylePage stylePage;
// Declare a CPropertyPage object with IDD_SHAPE, the ID of the
// template used for this page.
CPropertyPage shapePage(IDD_SHAPE);
CPropertyPage::GetPSP
Mengambil struktur Windows PROPSHEETPAGE
yang terkait dengan CPropertyPage
objek.
const PROPSHEETPAGE& GetPSP() const;
PROPSHEETPAGE& GetPSP();
Tampilkan Nilai
Referensi ke PROPSHEETPAGE
struktur.
CPropertyPage::m_psp
m_psp
adalah struktur yang anggotanya menyimpan karakteristik PROPSHEETPAGE
.
PROPSHEETPAGE m_psp;
Keterangan
Gunakan struktur ini untuk menginisialisasi tampilan halaman properti setelah dibuat.
Untuk informasi selengkapnya tentang struktur ini, termasuk daftar anggotanya, lihat PROPSHEETPAGE
di Windows SDK.
Contoh
CPropertySheet sheet(_T("Simple PropertySheet"));
// Change the settings of the three pages to enable property sheet's
// Help button when the page is active. CStylePage, CShapePage, and
// CColorPage are CPropertyPage-derived classes.
CStylePage pageStyle;
pageStyle.m_psp.dwFlags |= PSP_HASHELP;
CColorPage pageColor;
pageColor.m_psp.dwFlags |= PSP_HASHELP;
CShapePage pageShape;
pageShape.m_psp.dwFlags |= PSP_HASHELP;
sheet.AddPage(&pageStyle);
sheet.AddPage(&pageColor);
sheet.AddPage(&pageShape);
sheet.SetWizardMode();
sheet.DoModal();
CPropertyPage::OnApply
Fungsi anggota ini dipanggil oleh kerangka kerja ketika pengguna memilih tombol OK atau Terapkan Sekarang .
virtual BOOL OnApply();
Tampilkan Nilai
Bukan nol jika perubahan diterima; jika tidak, 0.
Keterangan
Ketika kerangka kerja memanggil fungsi ini, perubahan yang dilakukan pada semua halaman properti di lembar properti diterima, lembar properti mempertahankan fokus, dan OnApply
mengembalikan TRUE
(nilai 1). Sebelum OnApply
dapat dipanggil oleh kerangka kerja, Anda harus telah memanggil SetModified
dan mengatur parameternya ke TRUE
. Ini akan mengaktifkan tombol Terapkan Sekarang segera setelah pengguna membuat perubahan pada halaman properti.
Ambil alih fungsi anggota ini untuk menentukan tindakan apa yang diambil program Anda saat pengguna memilih tombol Terapkan Sekarang . Saat mengambil alih, fungsi harus kembali TRUE
menerima perubahan dan FALSE
untuk mencegah perubahan diterapkan.
Implementasi OnApply
default panggilan OnOK
.
Untuk informasi selengkapnya tentang pesan pemberitahuan yang dikirim saat pengguna menekan tombol Terapkan Sekarang atau OK di lembar properti, lihat PSN_APPLY
di Windows SDK.
Contoh
Lihat contoh untuk CPropertyPage::OnOK.
CPropertyPage::OnCancel
Fungsi anggota ini dipanggil oleh kerangka kerja saat tombol Batal dipilih.
virtual void OnCancel();
Keterangan
Ambil alih fungsi anggota ini untuk melakukan tindakan tombol Batalkan . Default meniadakan perubahan apa pun yang telah dibuat.
Contoh
// Discard any selection the user made to this page. The object
// in the view will be painted with the initial color when the
// CPropertySheet dialog is first shown. CColorPage is a
// CPropertyPage-derived class.
void CColorPage::OnCancel()
{
// Reset the color saved in the document class. m_InitialColor
// is a member variable of CColorPage and it is the color shown
// in the view before CPropertySheet is shown.
// doc->m_Color is the color saved in the document class, and
// this is the color to be used by the view class.
CMDIFrameWnd* pFrame = (CMDIFrameWnd*)AfxGetMainWnd();
CMDIChildWnd* pChild = pFrame->MDIGetActive();
CPSheetDoc* doc = (CPSheetDoc*)pChild->GetActiveDocument();
doc->m_Color = m_InitialColor;
// Tell the view to paint with the initial color.
CView* view = pChild->GetActiveView();
view->Invalidate();
CPropertyPage::OnCancel();
}
// The default MFC implementation of OnReset() would call OnCancel().
void CColorPage::OnReset()
{
CPropertyPage::OnReset();
}
CPropertyPage::OnKillActive
Fungsi anggota ini dipanggil oleh kerangka kerja ketika halaman tidak lagi menjadi halaman aktif.
virtual BOOL OnKillActive();
Tampilkan Nilai
Bukan nol jika data berhasil diperbarui, jika tidak, 0.
Keterangan
Ambil alih fungsi anggota ini untuk melakukan tugas validasi data khusus.
Implementasi default fungsi anggota ini menyalin pengaturan dari kontrol di halaman properti ke variabel anggota halaman properti. Jika data tidak berhasil diperbarui karena kesalahan validasi data dialog (DDV), halaman mempertahankan fokus.
Setelah fungsi anggota ini berhasil dikembalikan, kerangka kerja akan memanggil fungsi halaman OnOK
.
Contoh
// Validate the value entered to the "Number" edit control. Its
// value must be at least one. If not, tell the user and set the
// focus to the "Number" edit control. CStylePage is a
// CPropertyPage-derived class.
BOOL CStylePage::OnKillActive()
{
int num = GetDlgItemInt(IDC_NUMOBJECTS);
if (num <= 0)
{
AfxMessageBox(_T("Number of objects must be at least 1."));
CEdit* edit = (CEdit*) GetDlgItem(IDC_NUMOBJECTS);
edit->SetFocus();
edit->SetSel(0, -1);
return 0;
}
return CPropertyPage::OnKillActive();
}
CPropertyPage::OnOK
Fungsi anggota ini dipanggil oleh kerangka kerja ketika pengguna memilih tombol OK atau Terapkan Sekarang , segera setelah kerangka kerja memanggil OnKillActive
.
virtual void OnOK();
Keterangan
Saat pengguna memilih tombol OK atau Terapkan Sekarang , kerangka kerja menerima PSN_APPLY
pemberitahuan dari halaman properti. Panggilan ke OnOK
tidak akan dilakukan jika Anda memanggil CPropertySheet::PressButton
karena halaman properti tidak mengirim pemberitahuan dalam kasus tersebut.
Ambil alih fungsi anggota ini untuk menerapkan perilaku tambahan khusus untuk halaman yang saat ini aktif saat pengguna menutup seluruh lembar properti.
Implementasi default fungsi anggota ini menandai halaman sebagai "bersih" untuk mencerminkan bahwa data diperbarui dalam OnKillActive
fungsi.
Contoh
// Accept the new color selection and dismiss the CPropertySheet
// dialog. The view's object will be painted with the new selected
// color. CColorPage is a CPropertyPage-derived class.
void CColorPage::OnOK()
{
// Store the new selected color to a member variable of
// document class. m_Color is a member varible of CColorPage
// and it stores the new selected color. doc->m_Color is
// the color saved in the document class and it is the color
// used by the view class.
CMDIFrameWnd* pframe = (CMDIFrameWnd*) AfxGetMainWnd();
CMDIChildWnd* pchild = pframe->MDIGetActive();
CPSheetDoc* doc = (CPSheetDoc*) pchild->GetActiveDocument();
doc->m_Color = m_Color;
// Tell the view to paint with the new selected color.
CView* view = pchild->GetActiveView();
view->Invalidate();
CPropertyPage::OnOK();
}
// The default MFC implementation of OnApply() would call OnOK().
BOOL CColorPage::OnApply()
{
return CPropertyPage::OnApply();
}
CPropertyPage::OnQueryCancel
Fungsi anggota ini dipanggil oleh kerangka kerja ketika pengguna memilih tombol Batalkan dan sebelum tindakan pembatalan terjadi.
virtual BOOL OnQueryCancel();
Tampilkan Nilai
FALSE
Kembali untuk mencegah operasi pembatalan atau TRUE
untuk mengizinkannya.
Keterangan
Ambil alih fungsi anggota ini untuk menentukan tindakan yang diambil program ketika pengguna memilih tombol Batal .
Implementasi OnQueryCancel
default mengembalikan TRUE
.
Contoh
// Query the user whether to abort the changes if the new selected
// color (m_Color) is different from the initial color
// (m_InitialColor) when the CPropertySheet dialog is first shown.
// CColorPage is a CPropertyPage-derived class.
BOOL CColorPage::OnQueryCancel()
{
if (m_InitialColor != m_Color)
{
if (AfxMessageBox(_T("Abort the changes?"), MB_YESNO) == IDNO)
return FALSE;
}
return CPropertyPage::OnQueryCancel();
}
CPropertyPage::OnReset
Fungsi anggota ini dipanggil oleh kerangka kerja ketika pengguna memilih tombol Batalkan .
virtual void OnReset();
Keterangan
Ketika kerangka kerja memanggil fungsi ini, perubahan pada semua halaman properti yang dibuat oleh pengguna sebelumnya memilih tombol Terapkan Sekarang dibuang, dan lembar properti mempertahankan fokus.
Ambil alih fungsi anggota ini untuk menentukan tindakan apa yang diambil program ketika pengguna memilih tombol Batal .
Implementasi OnReset
default tidak melakukan apa pun.
Contoh
Lihat contoh untuk CPropertyPage::OnCancel.
CPropertyPage::OnSetActive
Fungsi anggota ini dipanggil oleh kerangka kerja ketika halaman dipilih oleh pengguna dan menjadi halaman aktif.
virtual BOOL OnSetActive();
Tampilkan Nilai
Bukan nol jika halaman berhasil diatur aktif; jika tidak, 0.
Keterangan
Ambil alih fungsi anggota ini untuk melakukan tugas saat halaman diaktifkan. Penggantian fungsi anggota ini biasanya akan memanggil versi default setelah memperbarui anggota data, untuk memungkinkannya memperbarui kontrol halaman dengan data baru.
Implementasi default membuat jendela untuk halaman, jika sebelumnya tidak dibuat, dan menjadikannya halaman aktif.
Contoh
Lihat contoh untuk CPropertySheet::SetFinishText.
CPropertyPage::OnWizardBack
Fungsi anggota ini dipanggil oleh kerangka kerja ketika pengguna memilih tombol Kembali dalam wizard.
virtual LRESULT OnWizardBack();
Tampilkan Nilai
0 untuk secara otomatis maju ke halaman berikutnya; -1 untuk mencegah halaman berubah. Untuk melompat ke halaman selain halaman berikutnya, kembalikan pengidentifikasi dialog yang akan ditampilkan.
Keterangan
Ambil alih fungsi anggota ini untuk menentukan beberapa tindakan yang harus diambil pengguna saat tombol Kembali ditekan.
Untuk informasi selengkapnya tentang cara membuat lembar properti jenis wizard, lihat CPropertySheet::SetWizardMode
.
Contoh
// The Back button is selected from the propertysheet. Get the selected
// radio button of the page by looping through all buttons on the
// pages. m_radioColor is a member variable of
// CColorPage (a CPropertyPage-derived class). Its initial value
// is initialized in OnInitDialog().
LRESULT CColorPage::OnWizardBack()
{
for (int id = IDC_RADIOBLACK; id <= IDC_RADIOGREEN; id++)
{
CButton* button = (CButton*)GetDlgItem(id);
if (button->GetCheck() == 1)
{
m_radioColor = id - IDC_RADIOBLACK;
break;
}
}
return CPropertyPage::OnWizardBack();
}
CPropertyPage::OnWizardFinish
Fungsi anggota ini dipanggil oleh kerangka kerja ketika pengguna memilih tombol Selesai dalam wizard.
virtual BOOL OnWizardFinish();
Tampilkan Nilai
Bukan nol jika lembar properti dihancurkan ketika wizard selesai; jika tidak, nol.
Keterangan
Saat pengguna memilih tombol Selesai dalam wizard, kerangka kerja memanggil fungsi ini; saat OnWizardFinish
mengembalikan TRUE
(nilai bukan nol), lembar properti dapat dihancurkan (tetapi tidak benar-benar dihancurkan). Panggil DestroyWindow
untuk menghancurkan lembar properti. Jangan memanggil DestroyWindow
dari OnWizardFinish
; melakukannya akan menyebabkan kerusakan tumpukan atau kesalahan lainnya.
Anda dapat mengambil alih fungsi anggota ini untuk menentukan beberapa tindakan yang harus diambil pengguna ketika tombol Selesai ditekan. Saat mengambil alih fungsi ini, kembali FALSE
untuk mencegah lembar properti dihancurkan.
Untuk informasi selengkapnya tentang pesan pemberitahuan yang dikirim saat pengguna menekan tombol Selesai di lembar properti wizard, lihat PSN_WIZFINISH
di Windows SDK.
Untuk informasi selengkapnya tentang cara membuat lembar properti jenis wizard, lihat CPropertySheet::SetWizardMode
.
Contoh
// Inform users regarding the selections they have made by
// navigating the pages in propertysheet.
BOOL CShapePage::OnWizardFinish()
{
CString report = _T("You have selected the following options:\n");
// Get the number of property pages from CPropertySheet.
CPropertySheet* sheet = (CPropertySheet*)GetParent();
int count = sheet->GetPageCount();
// Get the formatted string from each page. This formatted string
// will be shown in a message box. Each page knows about the
// string to be displayed. For simplicity, we derive a class
// from CPropertyPage called CMyPropertyPage. CMyPropertyPage
// has a pure virtual member function called GetPageSelections().
// All pages in the property sheet must be derived from
// CMyPropertyPage so we loop through each page to get the
// formatted string by calling the GetPageSelections() function.
for (int i = 0; i < count; i++)
{
CMyPropertyPage* page = (CMyPropertyPage*)sheet->GetPage(i);
CString str;
page->GetPageSelections(str);
report += _T("\n") + str;
}
AfxMessageBox(report);
return CPropertyPage::OnWizardFinish();
}
// An example of implementing the GetPageSelections() for CStylePage.
// CStylePage is a CMyPropertyPage-derived class, which in turn is a
// CPropertyPage-derived class.
void CStylePage::GetPageSelections(CString& str)
{
str.Format(_T("Number of objects to be created = %d"), m_NumObjects);
}
// An example of implementing the GetPageSelections() for CColorPage.
// CColorPage is a CMyPropertyPage-derived class, which in turn is a
// CPropertyPage-derived class.
void CColorPage::GetPageSelections(CString& str)
{
str = _T("Color selected is ");
switch (m_Color)
{
case RGB(0, 0, 0):
str += _T("Black");
break;
case RGB(255, 0, 0):
str += _T("Red");
break;
case RGB(0, 255, 0):
str += _T("Green");
break;
case RGB(0, 0, 255):
str += _T("Blue");
break;
default:
str += _T("Custom");
break;
}
}
// An example of implementing the GetPageSelections() for CShapePage.
// CShapePage is a CMyPropertyPage-derived class, which in turn is a
// CPropertyPage-derived class.
void CShapePage::GetPageSelections(CString& str)
{
CString shapename;
switch (m_Selection)
{
case IDC_RECTANGLE:
shapename = _T("Rectangle");
break;
case IDC_ROUND_RECTANGLE:
shapename = _T("Round Rectangle");
break;
case IDC_ELLIPSE:
shapename = _T("Ellipse");
break;
}
str.Format(_T("Shape to be created is %s"), shapename);
}
CPropertyPage::OnWizardNext
Fungsi anggota ini dipanggil oleh kerangka kerja ketika pengguna memilih tombol Berikutnya dalam wizard.
virtual LRESULT OnWizardNext();
Tampilkan Nilai
0 untuk secara otomatis maju ke halaman berikutnya; -1 untuk mencegah halaman berubah. Untuk melompat ke halaman selain halaman berikutnya, kembalikan pengidentifikasi dialog yang akan ditampilkan.
Keterangan
Ambil alih fungsi anggota ini untuk menentukan beberapa tindakan yang harus diambil pengguna saat tombol Berikutnya ditekan.
Untuk informasi selengkapnya tentang cara membuat lembar properti jenis wizard, lihat CPropertySheet::SetWizardMode
.
Contoh
// The Next button is selected from the propertysheet. Show the
// second page of the propertysheet ONLY if a non-zero value is
// entered to the Number edit control of the CStylePage. Otherwise
// display a message to the user and stay on the current page.
LRESULT CStylePage::OnWizardNext()
{
// Get the number from the edit control
int num = GetDlgItemInt(IDC_NUMOBJECTS);
if (num == 0)
{
// Display a message to the user
AfxMessageBox(_T("Supply a non-zero number on the edit control"), MB_OK);
// Stay on the current page
return -1;
}
// CPropertyPage::OnWizardNext returns zero and causes
// the property sheet to display the next page
return CPropertyPage::OnWizardNext();
}
CPropertyPage::QuerySiblings
Panggil fungsi anggota ini untuk meneruskan pesan ke setiap halaman di lembar properti.
LRESULT QuerySiblings(
WPARAM wParam,
LPARAM lParam);
Parameter
wParam
Menentukan informasi tambahan yang bergantung pada pesan.
lParam
Menentukan informasi tambahan yang bergantung pada pesan
Tampilkan Nilai
Nilai bukan nol dari halaman di lembar properti, atau 0 jika semua halaman mengembalikan nilai 0.
Keterangan
Jika halaman mengembalikan nilai bukan nol, lembar properti tidak mengirim pesan ke halaman berikutnya.
Contoh
// Validate the value entered in the Number edit control. If its
// value is not a natural number, request CPropertySheet (i.e. parent
// window of the page) to send a PSM_QUERYSIBLINGS message to each
// LOADED page (a page won't be loaded in memory until it is shown).
// If one of the pages returns a nonzero value in response to the
// PSM_QUERYSIBLINGS message, then inform the user and change the OK
// to Close and disable the Cancel button. CStylePage is a
// CPropertyPage-derived class.
BOOL CStylePage::OnApply()
{
int num = GetDlgItemInt(IDC_NUMOBJECTS);
if (num <= 0)
{
if (QuerySiblings(num, 0L))
{
AfxMessageBox(_T("Invalid data is entered. Choose Close ")
_T("button to close the dialog."));
CancelToClose();
}
}
return CPropertyPage::OnApply();
}
// This is an example of trapping the PSM_QUERYSIBLINGS in one of
// the pages. CColorPage is a CPropertyPage-derived class. Upon
// receiving this message, wParam contains the value passed to
// QuerySiblings() call. CColorPage will check this value and return
// FALSE only if the value is greater than 1.
ON_MESSAGE(PSM_QUERYSIBLINGS, &CColorPage::OnQuerySiblings)
LRESULT CColorPage::OnQuerySiblings(WPARAM wParam, LPARAM lParam)
{
UNREFERENCED_PARAMETER(lParam);
return (wParam <= 0);
}
CPropertyPage::SetModified
Panggil fungsi anggota ini untuk mengaktifkan atau menonaktifkan tombol Terapkan Sekarang , berdasarkan apakah pengaturan di halaman properti harus diterapkan ke objek eksternal yang sesuai.
void SetModified(BOOL bChanged = TRUE);
Parameter
bChanged
TRUE
untuk menunjukkan bahwa pengaturan halaman properti telah dimodifikasi sejak terakhir kali diterapkan; FALSE
untuk menunjukkan bahwa pengaturan halaman properti telah diterapkan, atau harus diabaikan.
Keterangan
Kerangka kerja melacak halaman mana yang "kotor," yaitu, halaman properti yang telah Anda panggil SetModified( TRUE )
. Tombol Terapkan Sekarang akan selalu diaktifkan jika Anda memanggil SetModified( TRUE )
salah satu halaman. Tombol Terapkan Sekarang akan dinonaktifkan saat Anda memanggil SetModified( FALSE )
salah satu halaman, tetapi hanya jika tidak ada halaman lain yang "kotor."
Contoh
// OnColorClicked() is a member function of CColorPage (a
// CPropertyPage-derived class). It is called whenever a radio button
// is selected on the page. Call SetModified() to enable the Apply
// button whenever a new selection is made. m_Color is a member
// variable of CColorPage and it is to store the selected RGB color.
// Its entry in the message map looks like this:
// ON_CONTROL_RANGE(BN_CLICKED, IDC_BLACK, IDC_GREEN, CColorPage::OnColorClicked)
void CColorPage::OnColorClicked(UINT nCmdID)
{
COLORREF color = m_Color;
switch (nCmdID)
{
case IDC_RADIOBLACK:
color = RGB(0, 0, 0);
m_radioColor = crBlack;
break;
case IDC_RADIORED:
color = RGB(255, 0, 0);
m_radioColor = crRed;
break;
case IDC_RADIOGREEN:
color = RGB(0, 255, 0);
m_radioColor = crGreen;
break;
case IDC_RADIOBLUE:
color = RGB(0, 0, 255);
m_radioColor = crBlue;
break;
}
if (color != m_Color)
{
m_Color = color;
SetModified(); // Enable Apply Now button.
}
UpdateData(FALSE);
}
Lihat juga
Sampel MFC CMNCTRL1
Sampel MFC CMNCTRL2
Sampel MFC PROPDLG
Sampel MFC SNAPVW
CDialog
Kelas
Bagan Hierarki
CPropertySheet
Kelas