Bagikan melalui


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

CObject

CCmdTarget

CWnd

CDialog

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.

  • Lembar properti DoModal atau Create fungsi telah dipanggil.

  • 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.

  • Lembar properti DoModal atau Create fungsi telah dipanggil.

  • 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