Bagikan melalui


struktur CONTEXTMENUITEM2 (mmc.h)

Struktur CONTEXTMENUITEM2 diperkenalkan dalam MMC 2.0.

Struktur CONTEXTMENUITEM2 diteruskan ke metode IContextMenuCallback2::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 baru disisipkan. Struktur CONTEXTMENUITEM2 menggantikan struktur CONTEXTMENUITEM (selain anggota strLanguageIndependentName , semua anggota CONTEXTMENUITEM2 berada dalam CONTEXTMENUITEM).

Sintaks

typedef struct _CONTEXTMENUITEM2 {
  LPWSTR strName;
  LPWSTR strStatusBarText;
  LONG   lCommandID;
  LONG   lInsertionPointID;
  LONG   fFlags;
  LONG   fSpecialFlags;
  LPWSTR strLanguageIndependentName;
} CONTEXTMENUITEM2;

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 pada bilah status saat item ini disorot. Anggota ini bisa NULL.

lCommandID

Nilai yang menentukan pengidentifikasi perintah untuk item menu. Jika item menu ditambahkan oleh IExtendContextMenu::AddMenuItems lalu dipilih, lCommandID adalah parameter 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.

Bit berikut dalam ID perintah memerlukan penanganan khusus untuk item yang bukan titik penyisipan atau submenu.

CCM_COMMANDID_MASK_RESERVED (0xFFFF0000)

Item selain titik penyisipan dan submenu tidak dapat ditambahkan ketika bit ini diatur.

Bit berikut 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 submenu 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 submenu.

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

CCM_INSERTIONPOINTID_MASK_ADD_PRIMARY (0x20000000)

Memungkinkan snap-in utama untuk menambahkan item ke titik penyisipan bersama atau submenu.

CCM_INSERTIONPOINTID_MASK_ADD_3RDPARTY (0x10000000)

Memungkinkan snap-in ekstensi untuk menambahkan item ke titik penyisipan bersama atau submenu.

CCM_INSERTIONPOINTID_MASK_RESERVED (0x0FFF0000)

Titik penyisipan atau submenu tidak dapat ditambahkan dengan set nilai 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 0 mengacu pada menu akar untuk menu konteks ini. Nilai 0 dapat digunakan secara bergantian dengan CCM_INSERTIONPOINTID_ROOT_MENU. Ketahuilah bahwa hanya IContextMenuProvider yang diizinkan untuk menambahkan item langsung ke menu akar. Ekstensi hanya dapat menambahkan item ke titik penyisipan dan submenu 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 panel cakupan dan 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 panel lingkup dan hasil.

CCM_INSERTIONPOINTID_PRIMARY_VIEW (0xA0000003)

Snap-in utama dapat menggunakan titik penyisipan ini untuk menambahkan item ke menu Tampilan . Jika pengguna mengklik menu drop-down Tampilan pada 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)

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

Item yang dibuat adalah submenu dalam menu konteks. Item menu, titik penyisipan, dan submenu lainnya dapat ditambahkan ke submenu yang dibuat; item menu, submenu, atau titik penyisipan baru harus menggunakan anggota lCommandID submenu yang dibuat sebagai nilai anggota lInsertionPointID .

MF_BITMAP

Bendera ini tidak didukung; IContextMenuCallback2::AddItem akan mengembalikan E_INVALIDARG.

MF_OWNERDRAW

Bendera ini tidak didukung; IContextMenuCallback2::AddItem akan mengembalikan E_INVALIDARG.

MF_SEPARATOR

Menggambar garis pemisah horizontal.

Hanya 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 meredupkan item menu.

MF_ENABLED

Memfungsikan item menu agar bisa dipilih, memulihkannya dari keadaan redup.

MF_GRAYED

Menonaktifkan item menu, meredupkannya sehingga tidak dapat dipilih.

MF_MENUBARBREAK

Fungsinya sama dengan bendera MF_MENUBREAK untuk bilah menu. Untuk menu drop-down, submenu, atau menu pintasan, garis vertikal memisahkan kolom baru dari kolom lama.

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 di 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 satu pemisah.

Hanya IContextMenuProvider yang dapat menambahkan pemisah, khusus atau sebaliknya.

CCM_SPECIAL_SUBMENU (0x0002)

Jika submenu ini kosong, submenu ini tampak redup; ini hanya berlaku untuk item MF_POPUP .

CCM_SPECIAL_DEFAULT_ITEM (0x0004)

Ini adalah 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. Bendera ini membuat titik penyisipan baru di akhir titik penyisipan atau submenu yang diidentifikasi oleh lInsertionPointID. Item menu, submenu, atau titik penyisipan baru dapat ditambahkan ke titik penyisipan yang dibuat; item menu, submenu, atau titik penyisipan baru harus menggunakan anggota lCommandID titik penyisipan yang dibuat sebagai nilai anggota lInsertionPointID .

CCM_SPECIAL_TESTONLY = 0x0010

Validasi parameter item, tetapi jangan tambahkan item menu. Mengembalikan kode hasil yang menunjukkan apakah operasi Tambahkan akan berhasil.

strLanguageIndependentName

Nama item menu yang tidak bergantung pada bahasa. Ambil nilai ini di aplikasi Model Objek Automasi MMC 2.0 dengan mendapatkan properti MenuItem.LanguageIndependentName . Anggota strLanguageIndependentName tidak boleh NULL atau string kosong kecuali pemisah atau titik penyisipan ditambahkan; jika tidak, metode IContextMenuCallback::AddItem akan gagal dengan E_INVALIDARG sebagai nilai yang dikembalikan.

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Windows Vista
Server minimum yang didukung Windows Server 2008
Header mmc.h

Lihat juga

IContextMenuCallback2

IContextMenuProvider

IExtendContextMenu

Bekerja dengan Menu Konteks