Struktur CONTEXTMENUITEM (mmc.h)
Struktur CONTEXTMENUITEM diteruskan ke metode IContextMenuCallback::AddItem atau metode IContextMenuProvider::AddItem (diwarisi dari IContextMenuCallback) untuk menentukan item menu, submenu, atau titik penyisipan baru. Menu konteks dibangun dari akar ke bawah, dengan setiap item baru masuk ke akhir submenu atau titik penyisipan tempat item disisipkan.
Sintaks
typedef struct _CONTEXTMENUITEM {
LPWSTR strName;
LPWSTR strStatusBarText;
LONG lCommandID;
LONG lInsertionPointID;
LONG fFlags;
LONG fSpecialFlags;
} CONTEXTMENUITEM;
Anggota
strName
Penunjuk ke string yang dihentikan null yang berisi nama item menu atau submenu. Anggota ini tidak boleh NULL kecuali untuk pemisah atau titik penyisipan.
strStatusBarText
Penunjuk ke string yang dihentikan null yang berisi teks yang ditampilkan di bilah status saat item ini disorot. Anggota ini bisa NULL.
lCommandID
Nilai yang menentukan pengidentifikasi perintah untuk item menu. Jika item menu ini ditambahkan oleh IExtendContextMenu::AddMenuItems lalu dipilih, ini adalah ID perintah yang diteruskan kembali ke IExtendContextMenu::Command. Jika item menu ini ditambahkan oleh antarmuka IContextMenuProvider lalu dipilih, ini adalah ID perintah yang diteruskan kembali ke pISelected by IContextMenuProvider::ShowContextMenu. Jika ini adalah titik penyisipan (CCM_SPECIAL_INSERTION_POINT diatur dalam fSpecialFlags) atau submenu (MF_POPUP diatur dalam fFlags), gunakan lCommandID dalam panggilan berikutnya sebagai lInsertionPointID (untuk informasi selengkapnya, lihat daftar berikut). Baca diskusi berikut dengan cermat karena bit tertentu dalam ID titik penyisipan baru harus aktif dan yang lain harus nonaktif.
Beberapa bit dalam ID perintah memerlukan penanganan khusus untuk item yang bukan titik penyisipan atau submenus.
CCM_COMMANDID_MASK_RESERVED = 0xFFFF0000
Item selain titik penyisipan dan submenus tidak dapat ditambahkan ketika bit ini diatur.
Beberapa bit dalam ID titik penyisipan memerlukan penanganan khusus untuk item yang merupakan titik penyisipan (fSpecialFlags dan CCM_SPECIAL_INSERTION_POINT) atau submenus (fFlags dan MF_POPUP).
CCM_INSERTIONPOINTID_MASK_SPECIAL = 0xFFFF0000
Perilaku khusus. Snap-in dapat menggunakan bit lain sesuai kebutuhan.
CCM_INSERTIONPOINTID_MASK_SHARED = 0x80000000
Titik penyisipan dan submenus ini dibagikan antara pembuat menu konteks, ekstensi utama, dan ekstensi pihak ketiga. Item yang ditambahkan ke titik penyisipan bersama atau submenu tersedia untuk pembuat menu konteks, ekstensi utama, dan ekstensi pihak ketiga.
Jika bit ini tidak diatur, antarmuka IContextMenuProvider dan setiap ekstensi dapat menggunakan ID yang sama. Setiap ID mengacu pada titik penyisipan atau submenu yang berbeda.
Hanya pembuat menu konteks dan snap-in utama yang dapat membuat titik penyisipan bersama atau submenus.
CCM_INSERTIONPOINTID_MASK_CREATE_PRIMARY = 0x40000000
Bit ini harus diatur untuk titik penyisipan bersama dan submenus yang dibuat oleh snap-in utama dan tidak diatur untuk yang dibuat oleh pembuat menu konteks. Ini mencegah konflik ID antara dua sumber titik penyisipan bersama dan submenus.
CCM_INSERTIONPOINTID_MASK_ADD_PRIMARY = 0x20000000
Izinkan snap-in utama untuk menambahkan item ke titik penyisipan bersama atau submenu.
CCM_INSERTIONPOINTID_MASK_ADD_3RDPARTY = 0x10000000
Perbolehkan snap-in ekstensi untuk menambahkan item ke titik penyisipan bersama atau submenu.
CCM_INSERTIONPOINTID_MASK_RESERVED = 0x0FFF0000
Titik penyisipan atau submenus tidak dapat ditambahkan dengan salah satu kumpulan bit ini.
lInsertionPointID
Nilai yang menentukan di mana di menu konteks item baru harus ditambahkan. Snap-in hanya dapat menambahkan item ke titik penyisipan yang dibuat oleh pembuat menu atau snap-in utama. Berikut ini adalah titik penyisipan yang dibuat oleh MMC di menu konteks default untuk item di panel cakupan dan panel hasil tampilan daftar:
0 (zero)
lInsertionPointID nol mengacu pada menu akar untuk menu konteks ini. Nol dapat digunakan secara bergantian dengan CCM_INSERTIONPOINTID_ROOT_MENU. Ketahuilah bahwa hanya antarmuka IContextMenuProvider yang dapat menambahkan item langsung ke menu akar. Ekstensi hanya dapat menambahkan item ke titik penyisipan dan submenus yang ditambahkan ke menu akar oleh IContextMenuProvider atau oleh MMC.
CCM_INSERTIONPOINTID_PRIMARY_TOP = 0xA0000000
Snap-in utama dapat menggunakan titik penyisipan ini untuk menambahkan item ke bagian atas menu konteks utama.
CCM_INSERTIONPOINTID_PRIMARY_NEW = 0xA0000001
Snap-in utama dapat menggunakan titik penyisipan ini untuk menambahkan item ke bagian atas submenu Baru. Submenu Baru tersedia di menu konteks di panel cakupan dan panel hasil.
CCM_INSERTIONPOINTID_PRIMARY_TASK = 0xA0000002
Snap-in utama dapat menggunakan titik penyisipan ini untuk menambahkan item ke bagian atas submenu Semua Tugas. Submenu Semua Tugas tersedia di menu konteks di panel cakupan dan panel hasil.
CCM_INSERTIONPOINTID_PRIMARY_VIEW = 0xA0000003
Snap-in utama dapat menggunakan titik penyisipan ini untuk menambahkan item ke menu drop-down Tampilan . Jika pengguna mengklik menu Tampilan di toolbar, titik penyisipan ini akan ada, tetapi titik penyisipan Baru dan Semua Tugas tidak akan muncul.
CCM_INSERTIONPOINTID_3RDPARTY_NEW = 0x90000001
Snap-in ekstensi dapat menggunakan titik penyisipan ini untuk menambahkan item ke bagian bawah submenu Baru. Submenu Baru hanya ada untuk menu konteks di panel cakupan dan bukan untuk menu konteks di panel hasil.
CCM_INSERTIONPOINTID_3RDPARTY_TASK = 0x90000002
Snap-in ekstensi dapat menggunakan titik penyisipan ini untuk menambahkan item ke bagian bawah submenu Semua Tugas.
CCM_INSERTIONPOINTID_ROOT_MENU = 0x80000000
Antarmuka IContextMenuProvider dapat menggunakan titik penyisipan ini untuk menambahkan item ke menu akar.
Baik ekstensi utama maupun ekstensi pihak ketiga tidak dapat menambahkan item ke menu akar kecuali melalui titik penyisipan yang ditambahkan oleh IContextMenuProvider.
fFlags
Nilai yang menentukan satu atau beberapa bendera gaya berikut:
MF_POPUP
Nilai yang menentukan bahwa ini adalah submenu dalam menu konteks. Item menu, titik penyisipan, dan submenu lebih lanjut dapat ditambahkan ke submenu ini menggunakan lCommandID-nya sebagai lInsertionPointID mereka.
MF_BITMAP
MF_OWNERDRAW
Bendera ini tidak didukung dan akan menghasilkan IContextMenuCallback::AddItem mengembalikan E_INVALIDARG.
MF_SEPARATOR
Menggambar garis pemisah horizontal.
Hanya antarmuka IContextMenuProvider yang dapat menambahkan item menu dengan MF_SEPARATOR diatur.
Bendera berikut berfungsi dengan cara yang sama seperti yang mereka lakukan di Windows API:
MF_CHECKED
Memilih item menu.
MF_DISABLED
Menonaktifkan item menu sehingga tidak dapat dipilih, tetapi bendera tidak berwarna abu-abu.
MF_ENABLED
Mengaktifkan item menu sehingga dapat dipilih, memulihkannya dari status abu-abu.
MF_GRAYED
Menonaktifkan item menu, sehingga tidak dapat dipilih.
MF_MENUBARBREAK
Fungsi sama dengan bendera MF_MENUBREAK untuk bilah menu. Untuk menu drop-down, submenu, atau menu pintasan, kolom baru dipisahkan dari kolom lama dengan garis vertikal.
MF_MENUBREAK
Places item pada baris baru (untuk bilah menu) atau di kolom baru (untuk menu drop-down, submenu, atau menu pintasan) tanpa memisahkan kolom.
MF_UNCHECKED
Tidak memilih item (default).
Grup bendera berikut tidak dapat digunakan bersama-sama:
- MF_DISABLED, MF_ENABLED dan MF_GRAYED
- MF_MENUBARBREAK dan MF_MENUBREAK
- MF_CHECKED dan MF_UNCHECKED
fSpecialFlags
Nilai yang menentukan satu atau beberapa bendera berikut:
CCM_SPECIAL_SEPARATOR = 0x0001
Abaikan semua parameter lain kecuali lInsertionPointID. Tambahkan pemisah ke akhir menu atau pada titik penyisipan yang ditentukan. Pemisah yang ditempatkan di bagian atas atau bawah menu atau submenu tidak akan ditampilkan. Pemisah tanpa item menu di antaranya akan diciutkan menjadi pemisah tunggal.
Hanya antarmuka IContextMenuProvider yang dapat menambahkan pemisah, khusus atau sebaliknya.
CCM_SPECIAL_SUBMENU = 0x0002
Jika submenu ini kosong, submenu ini akan berwarna abu-abu dan dinonaktifkan. Ini hanya berlaku untuk item MF_POPUP .
CCM_SPECIAL_DEFAULT_ITEM = 0x0004
Item menu default. Jika lebih dari satu item menu menentukan bendera ini, item terakhir di setiap submenu lebih diutamakan.
CCM_SPECIAL_INSERTION_POINT = 0x0008
Abaikan semua parameter lain kecuali lCommandID dan lInsertionPointID. Ini membuat titik penyisipan baru di akhir titik penyisipan atau submenu yang diidentifikasi oleh lInsertionPointID.
Panggilan berikutnya dapat menggunakan parameter lCommandID dari panggilan ini sebagai lInsertionPointID mereka, dan menyisipkan item menu, submenus, atau titik penyisipan mereka sendiri pada titik ini di menu.
CCM_SPECIAL_TESTONLY = 0x0010
Validasi parameter item, tetapi jangan tambahkan item menu. Mengembalikan kode hasil yang menunjukkan apakah penambahan akan berhasil.
Persyaratan
Persyaratan | Nilai |
---|---|
Klien minimum yang didukung | Windows Vista |
Server minimum yang didukung | Windows Server 2008 |
Header | mmc.h |