INFO: Membuat kotak Dialog Modeless dengan perpustakaan MFC

Terjemahan Artikel Terjemahan Artikel
ID Artikel: 103788 - Melihat produk di mana artikel ini berlaku.
Artikel ini menunjukkan cara membuat menggunakan kotak modeless dialog kotak dialog template menggunakan MFC sumber daya.

Untuk membangun sebuah kotak dialog CModeless, langkah-langkah berikut harus mengikuti:

  1. Membuat kelas dialog yang berasal dari CDialog dan menimpa Create() fungsi anggota CDialog. Sebagai contoh, Anda mungkin memiliki kode yang menyerupai berikut ini:
          class CModeless: public CDialog
               {
                 .
                 .
                 .
                 public:
                     CModeless(){ }
                     BOOL Create(UINT nID, CWnd * pWnd)
                          { return CDialog::Create(nID,pWnd);}
                 .
                 .
                 .
               };
    				
    Catatan: Anda dapat membiarkan ClassWizard menghasilkan dialog kelas dan kemudian cukup Tambahkan fungsi Create().
  2. Menulis kode untuk membangun objek kelas dialog dan membuat jendela kotak dialog. Sebagai contoh, jika Anda memiliki menu item yang harus menampilkan kotak dialog, Anda mungkin memiliki kode yang mirip Berikut ini:
          void CMainFrame::OnModeless()
            {
                pdlg = new CModeless;
                pdlg->Create(IDD_DIALOG1,this);
            }
    				
    di mana CMainFrame::pdlg didefinisikan sebagai:
    CModeless * pdlg;
    Catatan: Ini penting untuk mengalokasikan objek pada tumpukan daripada tumpukan jika Anda ingin mencegah kotak modeless dialog menjadi hancur bila fungsi keluar.
  3. Anda harus memanggil CWnd::DestroyWindow() di OnCancel, atau kapan saja kotak modeless dialog perlu dihancurkan.
          void CModeless::OnCancel()
          {
              DestroyWindow();
          }
    				
  4. Mengesampingkan CWnd::PostNcDestroy() di kelas dialog Anda untuk menghapus objek kotak dialog:
       virtual void CModeless::PostNcDestroy() {delete this;}
    				
    PostNcDestroy() adalah anggota virtual fungsi CWnd kelas yang disebut oleh fungsi OnNcDestroy().
Kelas modeless dialog biasanya akan menggantikan OnOK() dan OnCancel() anggota fungsi untuk memanggil DestroyWindow() dan harus tidak memanggil fungsi CDialog::OnOK() dan CDialog::OnCancel() kelas dasar. Panggilan fungsi CDialog::OnOK() dan CDialog::OnCancel() EndDialog(). EndDialog() harus disebut hanya bila menggunakan modal dialog kotak.

Jika Anda menggunakan Dialog Data Exchange (DDX) dan validasi Data Dialog (DDV), kau OnOK() penangan untuk kelas dialog Anda mungkin menyerupai berikut:
   void CModeless::OnOK()
   {
           if (!UpdateData(TRUE))
             {
               TRACE0("UpdateData failed during dialog termination\n");
               // The UpdateData routine will set focus to correct item
               return;
             }
           DestroyWindow();
   }
		
Perbesar semua | Perkecil semua

Properti

ID Artikel: 103788 - Kajian Terakhir: 14 September 2011 - Revisi: 2.0
Berlaku bagi:
  • Microsoft Foundation Class Library 4.2, ketika digunakan dengan:
    • Microsoft Visual C++ 1.0 Professional Edition
    • Microsoft Visual C++ 1.52 Professional Edition
    • Microsoft Visual C++ 2.1
    • Microsoft Visual C++ 4.0 Standard Edition
Kata kunci: 
kbdlg kbinfo kbuidesign kbmt KB103788 KbMtid
Penerjemahan Mesin
PENTING: Artikel ini diterjemahkan menggunakan perangkat lunak mesin penerjemah Microsoft dan bukan oleh seorang penerjemah. Microsoft menawarkan artikel yang diterjemahkan oleh seorang penerjemah maupun artikel yang diterjemahkan menggunakan mesin sehingga Anda akan memiliki akses ke seluruh artikel baru yang diterbitkan di Pangkalan Pengetahuan (Knowledge Base) dalam bahasa yang Anda gunakan. Namun, artikel yang diterjemahkan menggunakan mesin tidak selalu sempurna. Artikel tersebut mungkin memiliki kesalahan kosa kata, sintaksis, atau tata bahasa, hampir sama seperti orang asing yang berbicara dalam bahasa Anda. Microsoft tidak bertanggung jawab terhadap akurasi, kesalahan atau kerusakan yang disebabkan karena kesalahan penerjemahan konten atau penggunaannya oleh para pelanggan. Microsoft juga sering memperbarui perangkat lunak mesin penerjemah.
Klik disini untuk melihat versi Inggris dari artikel ini:103788
Sanggahan Konten KB yang Tidak Lagi Diperbarui
Artikel ini berisi tentang produk yang tidak lagi didukung oleh Microsoft. Oleh karena itu, artikel ini disajikan ?sebagaimana adanya? dan tidak akan diperbarui.

Berikan Masukan

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com