Metode IContextMenu::QueryContextMenu (shobjidl_core.h)

Menambahkan perintah ke menu pintasan.

Sintaks

HRESULT QueryContextMenu(
  HMENU hmenu,
  UINT  indexMenu,
  UINT  idCmdFirst,
  UINT  idCmdLast,
  UINT  uFlags
);

Parameter

hmenu

Jenis: HMENU

Handel ke menu pintasan. Handler harus menentukan handel ini saat menambahkan item menu.

indexMenu

Jenis: UINT

Posisi berbasis nol untuk menyisipkan item menu baru pertama.

idCmdFirst

Jenis: UINT

Nilai minimum yang dapat ditentukan handler untuk pengidentifikasi item menu.

idCmdLast

Jenis: UINT

Nilai maksimum yang dapat ditentukan handler untuk pengidentifikasi item menu.

uFlags

Jenis: UINT

Bendera opsional yang menentukan bagaimana menu pintasan dapat diubah. Parameter ini dapat diatur ke kombinasi nilai berikut. Bit yang tersisa dari kata urutan rendah dicadangkan oleh sistem. Kata urutan tinggi dapat digunakan untuk komunikasi khusus konteks. Nilai CMF_RESERVED dapat digunakan untuk menutupi kata berurutan rendah.

CMF_NORMAL (0x00000000)

0x00000000. Menunjukkan operasi normal. Ekstensi menu pintasan, ekstensi namespace, atau handler seret dan letakkan dapat menambahkan semua item menu.

CMF_DEFAULTONLY (0x00000001)

0x00000001. Pengguna mengaktifkan tindakan default, biasanya dengan mengklik dua kali. Bendera ini memberikan petunjuk untuk ekstensi menu pintasan untuk menambahkan apa pun jika tidak mengubah item default di menu. Ekstensi menu pintasan atau penangan seret dan letakkan tidak boleh menambahkan item menu apa pun jika nilai ini ditentukan. Ekstensi namespace paling banyak hanya boleh menambahkan item default.

CMF_VERBSONLY (0x00000002)

0x00000002. Menu pintasan adalah file pintasan (biasanya, file .lnk). Penangan menu pintasan harus mengabaikan nilai ini.

CMF_EXPLORE (0x00000004)

0x00000004. Jendela pohon Windows Explorer ada.

CMF_NOVERBS (0x00000008)

0x00000008. Bendera ini diatur untuk item yang ditampilkan di menu Kirim Ke . Penangan menu pintasan harus mengabaikan nilai ini.

CMF_CANRENAME (0x00000010)

0x00000010. Aplikasi panggilan mendukung penggantian nama item. Menu pintasan atau penangan seret dan letakkan harus mengabaikan bendera ini. Ekstensi namespace harus menambahkan item Ganti Nama ke menu jika berlaku.

CMF_NODEFAULT (0x00000020)

0x00000020. Tidak ada item dalam menu yang ditetapkan sebagai default. Handler seret dan letakkan harus mengabaikan bendera ini. Ekstensi namespace tidak boleh mengatur item menu apa pun sebagai default.

CMF_INCLUDESTATIC (0x00000040)

Nilai ini tidak tersedia.

Windows Server 2003 dan Windows XP: 0x00000040. Menu statis sedang dibangun. Hanya browser yang harus menggunakan bendera ini; semua ekstensi menu pintasan lainnya harus mengabaikannya.

CMF_ITEMMENU (0x00000080)

0x00000080. Aplikasi panggilan memanggil menu pintasan pada item dalam tampilan (dibandingkan dengan latar belakang tampilan).

Windows Server 2003 dan Windows XP: Nilai ini tidak tersedia.

CMF_EXTENDEDVERBS (0x00000100)

0x00000100. Aplikasi panggilan menginginkan kata kerja yang diperluas. Kata kerja normal ditampilkan saat pengguna mengklik kanan objek. Untuk menampilkan kata kerja yang diperluas, pengguna harus mengklik kanan sambil menekan tombol Shift.

CMF_DISABLEDVERBS (0x00000200)

0x00000200. Aplikasi panggilan berniat untuk memanggil kata kerja yang dinonaktifkan, seperti menu warisan.

Windows Server 2003 dan Windows XP: Nilai ini tidak tersedia.

CMF_ASYNCVERBSTATE (0x00000400)

0x00000400. Status kata kerja dapat dievaluasi secara asinkron.

Windows Server 2008, Windows Vista, Windows Server 2003 dan Windows XP: Nilai ini tidak tersedia.

CMF_OPTIMIZEFORINVOKE (0x00000800)

0x00000800. Menginformasikan penangan menu konteks yang tidak mendukung pemanggilan kata kerja melalui nama kata kerja kanonis untuk melewati IContextMenu::QueryContextMenu dalam implementasinya.

Windows Server 2008, Windows Vista, Windows Server 2003 dan Windows XP: Nilai ini tidak tersedia.

CMF_SYNCCASCADEMENU (0x00001000)

0x00001000. Isi submenu secara sinkron.

Windows Server 2008, Windows Vista, Windows Server 2003 dan Windows XP: Nilai ini tidak tersedia.

CMF_DONOTPICKDEFAULT (0x00002000)

0x00002000. Ketika tidak ada kata kerja yang ditentukan secara eksplisit, jangan gunakan kata kerja default di tempatnya.

Windows Server 2008, Windows Vista, Windows Server 2003 dan Windows XP: Nilai ini tidak tersedia.

CMF_RESERVED (0xffff0000)

0xffff0000. Bendera ini adalah bitmask yang menentukan semua bit yang tidak boleh digunakan. Ini hanya akan digunakan sebagai masker. Jangan teruskan ini sebagai nilai parameter.

Nilai kembali

Jenis: HRESULT

Jika berhasil, mengembalikan nilai HRESULT yang nilai tingkat keparahannya diatur ke SEVERITY_SUCCESS dan nilai kodenya diatur ke offset pengidentifikasi perintah terbesar yang ditetapkan, ditambah satu. Misalnya, jika idCmdFirst diatur ke 5 dan Anda menambahkan tiga item ke menu dengan pengidentifikasi perintah 5, 7, dan 8, nilai yang dikembalikan harus MAKE_HRESULT (SEVERITY_SUCCESS, 0, 8 - 5 + 1). Jika tidak, ia mengembalikan nilai kesalahan COM.

Keterangan

Metode ini harus memanggil InsertMenu atau InsertMenuItem untuk menyisipkan item menunya ke dalam menu yang ditentukan oleh hmenu. Parameter indexMenu menyimpan indeks yang akan digunakan untuk item menu pertama. Pengidentifikasi setiap item menu harus berada dalam rentang yang ditentukan oleh idCmdFirst dan idCmdLast.

Praktik umumnya adalah mengatur pengidentifikasi perintah pertama ke idCmdFirst (offset nol) dan menaikkan offset untuk setiap perintah tambahan satu per satu. Praktik ini memastikan bahwa Anda tidak melebihi idCmdLast dan mempertahankan rentang pengidentifikasi yang tersedia untuk digunakan oleh handler lain. Simpan offset untuk referensi karena dapat digunakan untuk mengidentifikasi perintah dalam panggilan berikutnya ke IContextMenu::GetCommandString dan IContextMenu::InvokeCommand.

Jika Shell kemudian memanggil penangan menu pintasan lain, Shell akan menggunakan nilai kode HRESULT yang dikembalikan untuk mengatur idCmdFirst saat memanggil metode QueryContextMenu handler tersebut.

Saat penangan menu konteks menambahkan item menu pop-up, penangan menu tersebut harus menggunakan IContextMenu::QueryContextMenu untuk menambahkan setidaknya satu item ke menu tersebut agar pesan WM_INITMENUPOPUP diteruskan.

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Windows XP [hanya aplikasi desktop]
Server minimum yang didukung Windows Server 2003 [hanya aplikasi desktop]
Target Platform Windows
Header shobjidl_core.h (termasuk Shobjidl.h)
DLL Shell32.dll (versi 4.0 atau yang lebih baru)