TN022: Implementasi Perintah Standar
Catatan
Catatan teknis berikut belum diperbarui sejak pertama kali disertakan dalam dokumentasi online. Akibatnya, beberapa prosedur dan topik mungkin kedaluarsa atau salah. Untuk informasi terbaru, disarankan agar Anda mencari topik yang menarik dalam indeks dokumentasi online.
Catatan ini menjelaskan implementasi perintah standar yang disediakan oleh MFC 2.0. Baca Catatan Teknis 21 terlebih dahulu karena menjelaskan mekanisme yang digunakan untuk mengimplementasikan banyak perintah standar.
Deskripsi ini mengasumsikan pengetahuan tentang arsitektur MFC, API, dan praktik pemrograman umum. API "implementasi saja" yang didokumentasikan serta tidak terdokumentasi dijelaskan. Ini bukan tempat untuk mulai belajar tentang fitur atau cara memprogram di MFC. Lihat Visual C++ untuk informasi umum selengkapnya dan untuk detail API yang didokumentasikan.
Masalah
MFC mendefinisikan banyak ID perintah standar dalam file header AFXRES.H. Dukungan kerangka kerja untuk perintah ini bervariasi. Memahami di mana dan bagaimana kelas kerangka kerja menangani perintah ini tidak hanya akan menunjukkan kepada Anda bagaimana kerangka kerja bekerja secara internal tetapi akan memberikan informasi yang berguna tentang cara menyesuaikan implementasi standar dan mengajari Anda beberapa teknik untuk menerapkan penangan perintah Anda sendiri.
Isi Catatan Teknis Ini
Setiap ID perintah dijelaskan dalam dua bagian:
Judul: nama simbolis ID perintah (misalnya, ID_FILE_SAVE) diikuti dengan tujuan perintah (misalnya, "menyimpan dokumen saat ini") dipisahkan oleh titik dua.
Satu atau beberapa paragraf yang menjelaskan kelas mana yang mengimplementasikan perintah, dan apa yang dilakukan implementasi default
Sebagian besar implementasi perintah default telah disiapkan sebelumnya dalam peta pesan kelas dasar kerangka kerja. Ada beberapa implementasi perintah yang memerlukan kabel eksplisit di kelas turunan Anda. Ini dijelaskan di bawah "Catatan". Jika Anda memilih opsi yang tepat di AppWizard, handler default ini akan terhubung untuk Anda dalam aplikasi kerangka yang dihasilkan.
Konvensi Penamaan
Perintah standar mengikuti konvensi penamaan sederhana yang kami sarankan Anda gunakan jika memungkinkan. Sebagian besar perintah standar terletak di tempat standar di bilah menu aplikasi. Nama simbolis perintah dimulai dengan "ID_" diikuti dengan nama menu pop-up standar, diikuti dengan nama item menu. Nama simbolis dalam huruf besar dengan garis bawah pemisah kata. Untuk perintah yang tidak memiliki nama item menu standar, nama perintah logis ditentukan dimulai dengan "ID_" (misalnya, ID_NEXT_PANE).
Kami menggunakan awalan "ID_" untuk menunjukkan perintah yang dirancang untuk terikat ke item menu, tombol toolbar, atau objek antarmuka pengguna perintah lainnya. Penangan perintah yang menangani perintah "ID_" harus menggunakan mekanisme ON_COMMAND dan ON_UPDATE_COMMAND_UI arsitektur perintah MFC.
Sebaiknya gunakan awalan "IDM_" standar untuk item menu yang tidak mengikuti arsitektur perintah dan memerlukan kode khusus menu untuk mengaktifkan dan menonaktifkannya. Tentu saja jumlah perintah spesifik menu harus kecil karena mengikuti arsitektur perintah MFC tidak hanya membuat penangan perintah lebih kuat (karena mereka akan bekerja dengan toolbar) tetapi membuat kode handler perintah dapat digunakan kembali.
Rentang ID
Silakan merujuk ke Catatan Teknis 20 untuk detail selengkapnya tentang penggunaan rentang ID di MFC.
Perintah standar MFC berada dalam rentang 0xE000 ke 0xEFFF. Jangan mengandalkan nilai spesifik ID ini karena id ini dapat berubah dalam versi pustaka yang akan datang.
Aplikasi Anda harus menentukan perintahnya dalam rentang 0x8000 ke 0xDFFF.
ID Perintah Standar
Untuk setiap ID perintah, ada string prompt baris pesan standar yang dapat ditemukan di PROMPTS file. RC. ID string untuk perintah menu tersebut harus sama dengan UNTUK ID perintah.
ID_FILE_NEW Membuat dokumen baru/kosong.
Catatan
Anda harus menyambungkan ini ke peta pesan kelas turunan Anda
CWinApp
untuk mengaktifkan fungsionalitas ini.CWinApp::OnFileNew
menerapkan perintah ini secara berbeda tergantung pada jumlah templat dokumen dalam aplikasi. Jika hanya ada satuCDocTemplate
,CWinApp::OnFileNew
akan membuat dokumen baru dari jenis tersebut, serta bingkai dan kelas tampilan yang tepat.Jika ada lebih dari satu
CDocTemplate
,CWinApp::OnFileNew
akan meminta pengguna dengan dialog (AFX_IDD_NEWTYPEDLG) memungkinkan mereka memilih jenis dokumen mana yang akan digunakan. Yang dipilihCDocTemplate
digunakan untuk membuat dokumen.Salah satu penyesuaian umum ID_FILE_NEW adalah menyediakan pilihan jenis dokumen yang berbeda dan lebih grafis. Dalam hal ini Anda dapat mengimplementasikan sendiri
CMyApp::OnFileNew
dan menempatkannya di peta pesan Anda alih-alihCWinApp::OnFileNew
. Tidak perlu memanggil implementasi kelas dasar.Penyesuaian umum ID_FILE_NEW lainnya adalah menyediakan perintah terpisah untuk membuat dokumen dari setiap jenis. Dalam hal ini Anda harus menentukan ID perintah baru, misalnya ID_FILE_NEW_CHART dan ID_FILE_NEW_SHEET.
ID_FILE_OPEN Membuka dokumen yang sudah ada.
Catatan
Anda harus menyambungkan ini ke peta pesan kelas turunan Anda
CWinApp
untuk mengaktifkan fungsionalitas ini.CWinApp::OnFileOpen
memiliki implementasi panggilanCWinApp::DoPromptFileName
yang sangat sederhana diikutiCWinApp::OpenDocumentFile
dengan nama file atau jalur file untuk dibuka. RutinitasCWinApp
DoPromptFileName
implementasi memunculkan dialog FileOpen standar dan mengisinya dengan ekstensi file yang diperoleh dari templat dokumen saat ini.Salah satu penyesuaian umum ID_FILE_OPEN adalah menyesuaikan dialog FileBuka atau menambahkan filter file tambahan. Cara yang disarankan untuk menyesuaikan ini adalah dengan mengganti implementasi default dengan dialog FileOpen Anda sendiri, dan memanggil
CWinApp::OpenDocumentFile
dengan nama file atau jalur dokumen. Tidak perlu memanggil kelas dasar.ID_FILE_CLOSE Menutup dokumen yang saat ini terbuka.
CDocument::OnFileClose
CDocument::SaveModified
panggilan untuk meminta pengguna menyimpan dokumen jika telah dimodifikasi lalu memanggilOnCloseDocument
. Semua logika penutup, termasuk menghancurkan dokumen, dilakukan dalamOnCloseDocument
rutinitas.Catatan
ID_FILE_CLOSE bertindak berbeda dari pesan WM_CLOSE atau perintah sistem SC_CLOSE yang dikirim ke jendela bingkai dokumen. Menutup jendela akan menutup dokumen hanya jika itu adalah jendela bingkai terakhir yang memperlihatkan dokumen. Menutup dokumen dengan ID_FILE_CLOSE tidak hanya akan menutup dokumen tetapi akan menutup semua jendela bingkai yang memperlihatkan dokumen.
ID_FILE_SAVE Menyimpan dokumen saat ini.
Implementasi menggunakan rutinitas
CDocument::DoSave
pembantu yang digunakan untuk danOnFileSave
OnFileSaveAs
. Jika Anda menyimpan dokumen yang belum disimpan sebelumnya (yaitu, dokumen tersebut tidak memiliki nama jalur, seperti dalam kasus FileNew) atau yang dibaca dari dokumen baca-saja,OnFileSave
logika akan bertindak seperti perintah ID_FILE_SAVE_AS dan meminta pengguna untuk memberikan nama file baru. Proses aktual membuka file dan melakukan penghematan dilakukan melalui fungsiOnSaveDocument
virtual .Ada dua alasan umum untuk menyesuaikan ID_FILE_SAVE. Untuk dokumen yang tidak disimpan, cukup hapus item menu ID_FILE_SAVE dan tombol toolbar dari antarmuka pengguna Anda. Pastikan juga bahwa Anda tidak pernah mengotori dokumen Anda (yaitu, tidak pernah memanggil
CDocument::SetModifiedFlag
) dan kerangka kerja tidak akan pernah menyebabkan dokumen disimpan. Untuk dokumen yang disimpan ke tempat selain file disk, tentukan perintah baru untuk operasi tersebut.Dalam kasus
COleServerDoc
, ID_FILE_SAVE digunakan baik untuk penyimpanan file (untuk dokumen normal) dan pembaruan file (untuk dokumen yang disematkan).Jika data dokumen Anda disimpan dalam file disk individual, tetapi Anda tidak ingin menggunakan implementasi serialisasi default
CDocument
, Anda harus mengambil alihCDocument::OnSaveDocument
alihOnFileSave
.ID_FILE_SAVE_AS Menyimpan dokumen saat ini dengan nama file yang berbeda.
Implementasi menggunakan
CDocument::OnFileSaveAs
rutinitas pembantu yang samaCDocument::DoSave
denganOnFileSave
. PerintahOnFileSaveAs
ditangani sama seperti ID_FILE_SAVE jika dokumen tidak memiliki nama file sebelum penyimpanan.COleServerDoc::OnFileSaveAs
menerapkan logika untuk menyimpan file data dokumen normal atau menyimpan dokumen server yang mewakili objek OLE yang disematkan di beberapa aplikasi lain sebagai file terpisah.Jika Anda menyesuaikan logika ID_FILE_SAVE, Anda mungkin ingin menyesuaikan ID_FILE_SAVE_AS dengan cara yang sama atau operasi "Simpan Sebagai" mungkin tidak berlaku untuk dokumen Anda. Anda dapat menghapus item menu dari bilah menu jika tidak diperlukan.
ID_FILE_SAVE_COPY_AS Menyimpan salinan dokumen saat ini dengan nama baru.
Implementasinya
COleServerDoc::OnFileSaveCopyAs
sangat miripCDocument::OnFileSaveAs
dengan , kecuali bahwa objek dokumen tidak "dilampirkan" ke file yang mendasar setelah penyimpanan. Artinya, jika dokumen dalam memori "dimodifikasi" sebelum penyimpanan, dokumen masih "dimodifikasi". Selain itu, perintah ini tidak berpengaruh pada nama jalur atau judul yang disimpan dalam dokumen.ID_FILE_UPDATE Memberi tahu kontainer untuk menyimpan dokumen yang disematkan.
Implementasi
COleServerDoc::OnUpdateDocument
hanya memberi tahu kontainer bahwa penyematan harus disimpan. Kontainer kemudian memanggil API OLE yang sesuai untuk menyimpan objek yang disematkan.ID_FILE_PAGE_SETUP Memanggil dialog penyiapan/tata letak halaman khusus aplikasi.
Saat ini tidak ada standar untuk dialog ini, dan kerangka kerja tidak memiliki implementasi default dari perintah ini.
Jika Anda memilih untuk menerapkan perintah ini, kami sarankan Anda menggunakan ID perintah ini.
ID_FILE_PRINT_SETUP Panggil dialog Penyetelan Cetak standar.
Catatan
Anda harus menyambungkan ini ke peta pesan kelas turunan Anda
CWinApp
untuk mengaktifkan fungsionalitas ini.Perintah ini memanggil dialog penyetelan cetak standar yang memungkinkan pengguna untuk menyesuaikan pencetak dan mencetak setelan untuk setidaknya dokumen ini atau paling banyak semua dokumen dalam aplikasi ini. Anda harus menggunakan Panel Kontrol untuk mengubah setelan pencetak default untuk seluruh sistem.
CWinApp::OnFilePrintSetup
memiliki implementasi yang sangat sederhana membuatCPrintDialog
objek dan memanggilCWinApp::DoPrintDialog
fungsi implementasi. Ini mengatur penyetelan printer default aplikasi.Kebutuhan umum untuk menyesuaikan perintah ini adalah untuk memungkinkan pengaturan printer per dokumen, yang harus disimpan dengan dokumen ketika disimpan. Untuk melakukan ini, Anda harus menambahkan handler peta pesan di kelas Anda
CDocument
yang membuatCPrintDialog
objek, menginisialisasinya dengan atribut printer yang sesuai (biasanya hDevMode dan hDevNames), panggilCPrintDialog::DoModal
, dan simpan pengaturan printer yang diubah. Untuk implementasi yang kuat, Anda harus melihat implementasiCWinApp::DoPrintDialog
untuk mendeteksi kesalahan danCWinApp::UpdatePrinterSelection
untuk menangani default yang masuk akal dan melacak perubahan printer di seluruh sistem.ID_FILE_PRINT Pencetakan standar dokumen saat ini
Catatan
Anda harus menyambungkan ini ke peta pesan kelas turunan Anda
CView
untuk mengaktifkan fungsionalitas ini.Perintah ini mencetak dokumen saat ini, atau lebih dengan benar, memulai proses pencetakan, yang melibatkan pemanggilan dialog cetak standar dan menjalankan mesin cetak.
CView::OnFilePrint
mengimplementasikan perintah ini dan perulangan cetak utama. Ini memanggil virtualCView::OnPreparePrinting
untuk meminta pengguna dengan dialog cetak. Kemudian menyiapkan DC output untuk pergi ke printer, memunculkan dialog kemajuan pencetakan (AFX_IDD_PRINTDLG), dan mengirimStartDoc
escape ke printer.CView::OnFilePrint
juga berisi perulangan cetak berorientasi halaman utama. Untuk setiap halaman, ini memanggil virtualCView::OnPrepareDC
diikuti denganStartPage
escape dan memanggil virtualCView::OnPrint
untuk halaman tersebut. Setelah selesai, virtualCView::OnEndPrinting
dipanggil, dan dialog kemajuan pencetakan ditutup.Arsitektur pencetakan MFC dirancang untuk mengaitkan dengan berbagai cara untuk mencetak dan mencetak pratinjau. Anda biasanya akan menemukan berbagai
CView
fungsi yang dapat diganti memadai untuk tugas pencetakan berorientasi halaman. Hanya dalam kasus aplikasi yang menggunakan printer untuk output berorientasi non-halaman, jika Anda menemukan kebutuhan untuk mengganti implementasi ID_FILE_PRINT.ID_FILE_PRINT_PREVIEW Masukkan mode pratinjau cetak untuk dokumen saat ini.
Catatan
Anda harus menyambungkan ini ke peta pesan kelas turunan Anda
CView
untuk mengaktifkan fungsionalitas ini.CView::OnFilePrintPreview
memulai mode pratinjau cetak dengan memanggil fungsiCView::DoPrintPreview
pembantu yang didokumenkan .CView::DoPrintPreview
adalah mesin utama untuk perulangan pratinjau cetak, sama sepertiOnFilePrint
mesin utama untuk perulangan pencetakan.Operasi pratinjau cetak dapat disesuaikan dengan berbagai cara dengan meneruskan parameter yang berbeda ke
DoPrintPreview
. Silakan lihat Catatan Teknis 30, yang membahas beberapa detail pratinjau cetak dan cara menyesuaikannya.ID_FILE_MRU_FILE1... FILE16 Rentang ID perintah untuk daftar File MRU.
CWinApp::OnUpdateRecentFileMenu
adalah handler UI perintah pembaruan yang merupakan salah satu penggunaan mekanisme ON_UPDATE_COMMAND_UI yang lebih canggih. Di sumber daya menu, Anda hanya perlu menentukan satu item menu dengan ID ID_FILE_MRU_FILE1. Item menu tersebut awalnya tetap dinonaktifkan.Seiring bertambahnya daftar MRU, lebih banyak item menu ditambahkan ke daftar. Implementasi standar
CWinApp
default ke batas standar empat file yang terakhir digunakan. Anda dapat mengubah default dengan memanggilCWinApp::LoadStdProfileSettings
dengan nilai yang lebih besar atau lebih kecil. Daftar MRU disimpan dalam aplikasi . File INI. Daftar dimuat dalam fungsi aplikasiInitInstance
Anda jika Anda memanggilLoadStdProfileSettings
, dan disimpan saat aplikasi Anda keluar. Penangan UI perintah pembaruan MRU juga akan mengonversi jalur absolut ke jalur relatif untuk ditampilkan pada menu file.CWinApp::OnOpenRecentFile
adalah handler ON_COMMAND yang melakukan perintah aktual. Ini hanya mendapatkan nama file dari daftar MRU dan panggilanCWinApp::OpenDocumentFile
, yang melakukan semua pekerjaan membuka file dan memperbarui daftar MRU.Kustomisasi handler perintah ini tidak disarankan.
ID_EDIT_CLEAR Menghapus pilihan saat ini
Saat ini tidak ada implementasi standar untuk perintah ini. Anda harus menerapkan ini untuk setiap
CView
kelas turunan.CEditView
menyediakan implementasi perintah ini menggunakanCEdit::Clear
. Perintah dinonaktifkan jika tidak ada pilihan saat ini.Jika Anda memilih untuk menerapkan perintah ini, kami sarankan Anda menggunakan ID perintah ini.
ID_EDIT_CLEAR_ALL Menghapus seluruh dokumen.
Saat ini tidak ada implementasi standar untuk perintah ini. Anda harus menerapkan ini untuk setiap
CView
kelas turunan.Jika Anda memilih untuk menerapkan perintah ini, kami sarankan Anda menggunakan ID perintah ini. Lihat contoh Tutorial MFC SCRIBBLE untuk contoh implementasi.
ID_EDIT_COPY Menyalin pilihan saat ini ke Papan Klip.
Saat ini tidak ada implementasi standar untuk perintah ini. Anda harus menerapkan ini untuk setiap
CView
kelas turunan.CEditView
menyediakan implementasi perintah ini, yang menyalin teks yang saat ini dipilih ke Clipboard sebagai CF_TEXT menggunakanCEdit::Copy
. Perintah dinonaktifkan jika tidak ada pilihan saat ini.Jika Anda memilih untuk menerapkan perintah ini, kami sarankan Anda menggunakan ID perintah ini.
ID_EDIT_CUT Memotong pilihan saat ini ke Papan Klip.
Saat ini tidak ada implementasi standar untuk perintah ini. Anda harus menerapkan ini untuk setiap
CView
kelas turunan.CEditView
menyediakan implementasi perintah ini, yang memotong teks yang saat ini dipilih ke Clipboard sebagai CF_TEXT menggunakanCEdit::Cut
. Perintah dinonaktifkan jika tidak ada pilihan saat ini.Jika Anda memilih untuk menerapkan perintah ini, kami sarankan Anda menggunakan ID perintah ini.
ID_EDIT_FIND Memulai operasi temukan, memunculkan dialog temukan tanpa mode.
Saat ini tidak ada implementasi standar untuk perintah ini. Anda harus menerapkan ini untuk setiap
CView
kelas turunan.CEditView
menyediakan implementasi perintah ini, yang memanggil fungsiOnEditFindReplace
pembantu implementasi untuk menggunakan dan menyimpan pengaturan temukan/ganti sebelumnya dalam variabel implementasi privat. KelasCFindReplaceDialog
digunakan untuk mengelola dialog tanpa mode untuk meminta pengguna.Jika Anda memilih untuk menerapkan perintah ini, kami sarankan Anda menggunakan ID perintah ini.
ID_EDIT_PASTE Menyisipkan isi Papan Klip saat ini.
Saat ini tidak ada implementasi standar untuk perintah ini. Anda harus menerapkan ini untuk setiap
CView
kelas turunan.CEditView
menyediakan implementasi perintah ini, yang menyalin data Clipboard saat ini menggantikan teks yang dipilih menggunakanCEdit::Paste
. Perintah dinonaktifkan jika tidak ada CF_TEXT di Clipboard.COleClientDoc
hanya menyediakan handler UI perintah pembaruan untuk perintah ini. Jika Clipboard tidak berisi item/objek OLE yang dapat disematkan, perintah akan dinonaktifkan. Anda bertanggung jawab untuk menulis handler untuk perintah aktual untuk melakukan tempelan aktual. Jika aplikasi OLE Anda juga dapat menempelkan format lain, Anda harus menyediakan handler UI perintah pembaruan Anda sendiri dalam tampilan atau dokumen Anda (yaitu, di suatu tempat sebelumnyaCOleClientDoc
dalam perutean target perintah).Jika Anda memilih untuk menerapkan perintah ini, kami sarankan Anda menggunakan ID perintah ini.
Untuk mengganti implementasi OLE standar, gunakan
COleClientItem::CanPaste
.ID_EDIT_PASTE_LINK Menyisipkan tautan dari isi Papan Klip saat ini.
Saat ini tidak ada implementasi standar untuk perintah ini. Anda harus menerapkan ini untuk setiap
CView
kelas turunan.COleDocument
hanya menyediakan handler UI perintah pembaruan untuk perintah ini. Jika Clipboard tidak berisi item/objek OLE yang dapat ditautkan, perintah akan dinonaktifkan. Anda bertanggung jawab untuk menulis handler untuk perintah aktual untuk melakukan tempelan aktual. Jika aplikasi OLE Anda juga dapat menempelkan format lain, Anda harus menyediakan handler UI perintah pembaruan Anda sendiri dalam tampilan atau dokumen Anda (yaitu, di suatu tempat sebelumnyaCOleDocument
dalam perutean target perintah).Jika Anda memilih untuk menerapkan perintah ini, kami sarankan Anda menggunakan ID perintah ini.
Untuk mengganti implementasi OLE standar, gunakan
COleClientItem::CanPasteLink
.ID_EDIT_PASTE_SPECIAL Menyisipkan isi Papan Klip saat ini dengan opsi.
Saat ini tidak ada implementasi standar untuk perintah ini. Anda harus menerapkan ini untuk setiap
CView
kelas turunan. MFC tidak menyediakan dialog ini.Jika Anda memilih untuk menerapkan perintah ini, kami sarankan Anda menggunakan ID perintah ini.
ID_EDIT_REPEAT Mengulangi operasi terakhir.
Saat ini tidak ada implementasi standar untuk perintah ini. Anda harus menerapkan ini untuk setiap
CView
kelas turunan.CEditView
menyediakan implementasi perintah ini untuk mengulangi operasi temukan terakhir. Variabel implementasi privat untuk temuan terakhir digunakan. Perintah dinonaktifkan jika temuan tidak dapat dicoba.Jika Anda memilih untuk menerapkan perintah ini, kami sarankan Anda menggunakan ID perintah ini.
ID_EDIT_REPLACE Memulai operasi penggantian, memunculkan dialog penggantian tanpa mode.
Saat ini tidak ada implementasi standar untuk perintah ini. Anda harus menerapkan ini untuk setiap
CView
kelas turunan.CEditView
menyediakan implementasi perintah ini, yang memanggil fungsiOnEditFindReplace
pembantu implementasi untuk menggunakan dan menyimpan pengaturan temukan/ganti sebelumnya dalam variabel implementasi privat. KelasCFindReplaceDialog
digunakan untuk mengelola dialog tanpa mode yang meminta pengguna.Jika Anda memilih untuk menerapkan perintah ini, kami sarankan Anda menggunakan ID perintah ini.
ID_EDIT_SELECT_ALL Memilih seluruh dokumen.
Saat ini tidak ada implementasi standar untuk perintah ini. Anda harus menerapkan ini untuk setiap
CView
kelas turunan.CEditView
menyediakan implementasi perintah ini, yang memilih semua teks dalam dokumen. Perintah dinonaktifkan jika tidak ada teks untuk dipilih.Jika Anda memilih untuk menerapkan perintah ini, kami sarankan Anda menggunakan ID perintah ini.
ID_EDIT_UNDO Membatalkan operasi terakhir.
Saat ini tidak ada implementasi standar untuk perintah ini. Anda harus menerapkan ini untuk setiap
CView
kelas turunan.CEditView
menyediakan implementasi perintah ini, menggunakanCEdit::Undo
. Perintah dinonaktifkan jikaCEdit::CanUndo
mengembalikan FALSE.Jika Anda memilih untuk menerapkan perintah ini, kami sarankan Anda menggunakan ID perintah ini.
ID_EDIT_REDO Mengulangi operasi terakhir.
Saat ini tidak ada implementasi standar untuk perintah ini. Anda harus menerapkan ini untuk setiap
CView
kelas turunan.Jika Anda memilih untuk menerapkan perintah ini, kami sarankan Anda menggunakan ID perintah ini.
ID_WINDOW_NEW Membuka jendela lain pada dokumen aktif.
CMDIFrameWnd::OnWindowNew
menerapkan fitur canggih ini dengan menggunakan templat dokumen dokumen saat ini untuk membuat bingkai lain yang berisi tampilan lain dari dokumen saat ini.Seperti sebagian besar perintah menu Jendela antarmuka dokumen (MDI), perintah dinonaktifkan jika tidak ada jendela anak MDI aktif.
Kustomisasi handler perintah ini tidak disarankan. Jika Anda ingin memberikan perintah yang membuat tampilan tambahan atau jendela bingkai, Anda mungkin akan lebih baik dalam menciptakan perintah Anda sendiri. Anda dapat mengkloning kode dari
CMDIFrameWnd::OnWindowNew
dan memodifikasinya ke bingkai tertentu dan melihat kelas yang Anda sukai.ID_WINDOW_ARRANGE Mengatur ikon di bagian bawah jendela MDI.
CMDIFrameWnd
menerapkan perintah MDI standar ini dalam fungsiOnMDIWindowCmd
pembantu implementasi . Pembantu ini memetakan ID perintah ke pesan MDI Windows dan karenanya dapat berbagi banyak kode.Seperti kebanyakan perintah menu Jendela MDI, perintah dinonaktifkan jika tidak ada jendela anak MDI aktif.
Kustomisasi handler perintah ini tidak disarankan.
ID_WINDOW_CASCADE jendela Cascades sehingga tumpang tindih.
CMDIFrameWnd
menerapkan perintah MDI standar ini dalam fungsiOnMDIWindowCmd
pembantu implementasi . Pembantu ini memetakan ID perintah ke pesan MDI Windows dan karenanya dapat berbagi banyak kode.Seperti kebanyakan perintah menu Jendela MDI, perintah dinonaktifkan jika tidak ada jendela anak MDI aktif.
Kustomisasi handler perintah ini tidak disarankan.
ID_WINDOW_TILE_HORZ jendela Petak peta secara horizontal.
Perintah ini diimplementasikan
CMDIFrameWnd
sama seperti ID_WINDOW_CASCADE, kecuali pesan MDI Windows yang berbeda digunakan untuk operasi.Anda harus memilih orientasi petak peta default untuk aplikasi Anda. Anda dapat melakukan ini dengan mengubah ID untuk item menu Jendela "Petak" menjadi ID_WINDOW_TILE_HORZ atau ID_WINDOW_TILE_VERT.
ID_WINDOW_TILE_VERT jendela Petak peta secara vertikal.
Perintah ini diimplementasikan
CMDIFrameWnd
sama seperti ID_WINDOW_CASCADE, kecuali pesan MDI Windows yang berbeda digunakan untuk operasi.Anda harus memilih orientasi petak peta default untuk aplikasi Anda. Anda dapat melakukan ini dengan mengubah ID untuk item menu Jendela "Petak" menjadi ID_WINDOW_TILE_HORZ atau ID_WINDOW_TILE_VERT.
ID_WINDOW_SPLIT Antarmuka keyboard ke pemisah.
CView
menangani perintah ini untukCSplitterWnd
implementasi. Jika tampilan adalah bagian dari jendela pemisah, perintah ini akan mendelegasikan ke fungsiCSplitterWnd::DoKeyboardSplit
implementasi . Ini akan menempatkan pemisah dalam mode yang akan memungkinkan pengguna keyboard untuk membagi atau membuka pandang jendela pemisah.Perintah ini dinonaktifkan jika tampilan tidak dalam pemisah.
Kustomisasi handler perintah ini tidak disarankan.
ID_APP_ABOUT Memanggil kotak dialog Tentang.
Tidak ada implementasi standar untuk kotak Tentang aplikasi. Aplikasi default yang dibuat AppWizard akan membuat kelas dialog kustom untuk aplikasi Anda dan menggunakannya sebagai kotak Tentang Anda. AppWizard juga akan menulis handler perintah sepele yang menangani perintah ini dan memanggil dialog.
Anda hampir akan selalu menerapkan perintah ini.
ID_APP_EXIT Keluar dari aplikasi.
CWinApp::OnAppExit
menangani perintah ini dengan mengirim pesan WM_CLOSE ke jendela utama aplikasi. Penonaktifan standar aplikasi (meminta file kotor dan sebagainya) ditangani olehCFrameWnd
implementasi.Kustomisasi handler perintah ini tidak disarankan. Disarankan untuk mengambil alih
CWinApp::SaveAllModified
atauCFrameWnd
logika penutupan.Jika Anda memilih untuk menerapkan perintah ini, kami sarankan Anda menggunakan ID perintah ini.
ID_HELP_INDEX Mencantumkan topik Bantuan dari . File HLP.
Catatan
Anda harus menyambungkan ini ke peta pesan kelas turunan Anda
CWinApp
untuk mengaktifkan fungsionalitas ini.CWinApp::OnHelpIndex
menangani perintah ini dengan memanggilCWinApp::WinHelp
secara sepele .Kustomisasi handler perintah ini tidak disarankan.
ID_HELP_USING Menampilkan bantuan tentang cara menggunakan Bantuan.
Catatan
Anda harus menyambungkan ini ke peta pesan kelas turunan Anda
CWinApp
untuk mengaktifkan fungsionalitas ini.CWinApp::OnHelpUsing
menangani perintah ini dengan memanggilCWinApp::WinHelp
secara sepele .Kustomisasi handler perintah ini tidak disarankan.
ID_CONTEXT_HELP Memasuki mode bantuan SHIFT-F1.
Catatan
Anda harus menyambungkan ini ke peta pesan kelas turunan Anda
CWinApp
untuk mengaktifkan fungsionalitas ini.CWinApp::OnContextHelp
menangani perintah ini dengan mengatur kursor mode bantuan, memasukkan perulangan modal dan menunggu pengguna memilih jendela untuk mendapatkan bantuan. Silakan merujuk ke Catatan Teknis 28 untuk detail selengkapnya tentang implementasi Bantuan MFC.Kustomisasi handler perintah ini tidak disarankan.
ID_HELP Memberikan bantuan pada konteks saat ini
Catatan
Anda harus menyambungkan ini ke peta pesan kelas turunan Anda
CWinApp
untuk mengaktifkan fungsionalitas ini.CWinApp::OnHelp
menangani perintah ini dengan mendapatkan konteks bantuan yang tepat untuk konteks aplikasi saat ini. Ini menangani bantuan F1 sederhana, bantuan pada kotak pesan dan sebagainya. Silakan lihat Catatan Teknis 28 untuk detail selengkapnya tentang implementasi bantuan MFC.Kustomisasi handler perintah ini tidak disarankan.
ID_DEFAULT_HELP Menampilkan bantuan default untuk konteks
Catatan
Anda harus menyambungkan ini ke peta pesan kelas turunan Anda
CWinApp
untuk mengaktifkan fungsionalitas ini.Perintah ini biasanya dipetakan ke
CWinApp::OnHelpIndex
.Handler perintah yang berbeda dapat disediakan jika perbedaan antara Bantuan default dan indeks Bantuan diinginkan.
ID_NEXT_PANE Masuk ke panel berikutnya
CView
menangani perintah ini untukCSplitterWnd
implementasi. Jika tampilan adalah bagian dari jendela pemisah, perintah ini akan mendelegasikan ke fungsiCSplitterWnd::OnNextPaneCmd
implementasi . Ini akan memindahkan tampilan aktif ke panel berikutnya di pemisah.Perintah ini dinonaktifkan jika tampilan tidak berada dalam pemisah atau tidak ada panel berikutnya untuk masuk.
Kustomisasi handler perintah ini tidak disarankan.
ID_PREV_PANE Masuk ke panel sebelumnya
CView
menangani perintah ini untukCSplitterWnd
implementasi. Jika tampilan adalah bagian dari jendela pemisah, perintah ini akan mendelegasikan ke fungsiCSplitterWnd::OnNextPaneCmd
implementasi . Ini akan memindahkan tampilan aktif ke panel sebelumnya di pemisah.Perintah ini dinonaktifkan jika tampilan tidak berada dalam pemisah atau tidak ada panel sebelumnya untuk masuk ke.
Kustomisasi handler perintah ini tidak disarankan.
ID_OLE_INSERT_NEW Menyisipkan objek OLE baru
Saat ini tidak ada implementasi standar untuk perintah ini. Anda harus menerapkan ini untuk kelas -turunan Anda
CView
untuk menyisipkan item/objek OLE baru pada pilihan saat ini.Semua aplikasi klien OLE harus menerapkan perintah ini. AppWizard, dengan opsi OLE, akan membuat implementasi
OnInsertObject
kerangka di kelas tampilan Anda yang harus Anda selesaikan.Lihat contoh OCLIENT sampel MFC OLE untuk implementasi lengkap perintah ini.
ID_OLE_EDIT_LINKS Mengedit tautan OLE
COleDocument
menangani perintah ini dengan menggunakan implementasi yang disediakan MFC dari dialog tautan OLE standar. Implementasi dialog ini diakses melaluiCOleLinksDialog
kelas . Jika dokumen saat ini tidak berisi tautan apa pun, perintah dinonaktifkan.Kustomisasi handler perintah ini tidak disarankan.
ID_OLE_VERB_FIRST... RENTANG ID TERAKHIR untuk kata kerja OLE
COleDocument
menggunakan rentang ID perintah ini untuk kata kerja yang didukung oleh item/objek OLE yang saat ini dipilih. Ini harus berupa rentang karena jenis item/objek OLE tertentu dapat mendukung nol atau lebih kata kerja kustom. Di menu aplikasi, Anda harus memiliki satu item menu dengan ID ID_OLE_VERB_FIRST. Ketika program dijalankan, menu akan diperbarui dengan deskripsi kata kerja menu yang sesuai (atau menu pop-up dengan banyak kata kerja). Manajemen menu OLE ditangani olehAfxOleSetEditMenu
, dilakukan di handler UI perintah pembaruan untuk perintah ini.Tidak ada handler perintah eksplisit untuk menangani masing-masing ID perintah dalam rentang ini.
COleDocument::OnCmdMsg
ditimpa untuk menjebak semua ID perintah dalam rentang ini, mengubahnya menjadi angka kata kerja berbasis nol, dan meluncurkan server untuk kata kerja tersebut (menggunakanCOleClientItem::DoVerb
).Kustomisasi atau penggunaan lain dari rentang ID perintah ini tidak disarankan.
ID_VIEW_TOOLBAR Mengaktifkan dan menonaktifkan toolbar
CFrameWnd
menangani perintah ini dan handler UI perintah pembaruan untuk mengalihkan status toolbar yang terlihat. Bilah alat harus merupakan jendela anak dari bingkai dengan ID jendela anak AFX_IDW_TOOLBAR. Handler perintah benar-benar mengalihkan visibilitas jendela toolbar.CFrameWnd::RecalcLayout
digunakan untuk menggambar ulang jendela bingkai dengan toolbar dalam status barunya. Handler antarmuka pengguna perintah pembaruan memeriksa item menu saat toolbar terlihat.Kustomisasi handler perintah ini tidak disarankan. Jika Anda ingin menambahkan toolbar tambahan, Anda ingin mengkloning dan memodifikasi handler perintah dan handler UI perintah pembaruan untuk perintah ini.
ID_VIEW_STATUS_BAR Mengaktifkan dan menonaktifkan bilah status
Perintah ini diimplementasikan
CFrameWnd
sama seperti ID_VIEW_TOOLBAR, kecuali ID jendela anak yang berbeda (AFX_IDW_STATUS_BAR) digunakan.
Penangan Perintah Khusus Pembaruan
Beberapa ID perintah standar digunakan sebagai indikator dalam bilah status. Ini menggunakan mekanisme penanganan UI perintah pembaruan yang sama untuk menampilkan status visual mereka saat ini selama waktu diam aplikasi. Karena mereka tidak dapat dipilih oleh pengguna (yaitu, Anda tidak dapat mendorong panel bilah status), maka tidak masuk akal untuk memiliki handler ON_COMMAND untuk ID perintah ini.
ID_INDICATOR_CAPS : Indikator kunci CAP.
ID_INDICATOR_NUM : Indikator kunci NUM.
ID_INDICATOR_SCRL : Indikator kunci SCRL.
ID_INDICATOR_KANA : Indikator kunci KANA (hanya berlaku untuk sistem Jepang).
Ketiganya diimplementasikan dalam CFrameWnd::OnUpdateKeyIndicator
, pembantu implementasi yang menggunakan ID perintah untuk memetakan ke Kunci Virtual yang sesuai. Implementasi umum mengaktifkan atau menonaktifkan (untuk panel status dinonaktifkan = tidak ada teks) CCmdUI
objek tergantung pada apakah Kunci Virtual yang sesuai saat ini dikunci.
Kustomisasi handler perintah ini tidak disarankan.
ID_INDICATOR_EXT : Indikator pilih EXTended.
ID_INDICATOR_OVR : Indikator OVeRstrike.
ID_INDICATOR_REC : Indikator ReCording.
Saat ini tidak ada implementasi standar untuk indikator ini.
Jika Anda memilih untuk menerapkan indikator ini, kami sarankan Anda menggunakan ID indikator ini dan mempertahankan urutan indikator di bilah status Anda (yaitu, dalam urutan ini: EXT, CAP, NUM, SCRL, OVR, REC).
Baca juga
Catatan Teknis menurut Angka
Catatan Teknis menurut Kategori