Bagikan melalui


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

Lihat juga

IContextMenuCallback

IContextMenuProvider

IExtendContextMenu

Bekerja dengan Menu Konteks