Fungsi TrackPopupMenuEx (winuser.h)

Menampilkan menu pintasan pada lokasi yang ditentukan dan melacak pilihan item pada menu pintasan. Menu pintasan dapat muncul di mana saja di layar.

Sintaks

BOOL TrackPopupMenuEx(
  [in]           HMENU       hMenu,
  [in]           UINT        uFlags,
  [in]           int         x,
  [in]           int         y,
  [in]           HWND        hwnd,
  [in, optional] LPTPMPARAMS lptpm
);

Parameter

[in] hMenu

Jenis: HMENU

Handel ke menu pintasan yang akan ditampilkan. Handel ini dapat diperoleh dengan memanggil fungsi CreatePopupMenu untuk membuat menu pintasan baru atau dengan memanggil fungsi GetSubMenu untuk mengambil handel ke submenu yang terkait dengan item menu yang ada.

[in] uFlags

Jenis: UINT

Menentukan opsi fungsi.

Gunakan salah satu bendera berikut untuk menentukan bagaimana fungsi memosisikan menu pintasan secara horizontal.

Nilai Makna
TPM_CENTERALIGN
0x0004L
Tengahkan menu pintasan secara horizontal relatif terhadap koordinat yang ditentukan oleh parameter x .
TPM_LEFTALIGN
0x0000L
Memosisikan menu pintasan sehingga sisi kirinya selaras dengan koordinat yang ditentukan oleh parameter x .
TPM_RIGHTALIGN
0x0008L
Memosisikan menu pintasan sehingga sisi kanannya selaras dengan koordinat yang ditentukan oleh parameter x .
 

Gunakan salah satu bendera berikut untuk menentukan bagaimana fungsi memosisikan menu pintasan secara vertikal.

Nilai Makna
TPM_BOTTOMALIGN
0x0020L
Memposisikan menu pintasan sehingga sisi bawahnya selaras dengan koordinat yang ditentukan oleh parameter y .
TPM_TOPALIGN
0x0000L
Memposisikan menu pintasan sehingga sisi atasnya selaras dengan koordinat yang ditentukan oleh parameter y .
TPM_VCENTERALIGN
0x0010L
Tengahkan menu pintasan secara vertikal relatif terhadap koordinat yang ditentukan oleh parameter y .
 

Gunakan bendera berikut untuk mengontrol penemuan pilihan pengguna tanpa harus menyiapkan jendela induk untuk menu.

Nilai Makna
TPM_NONOTIFY
0x0080L
Fungsi ini tidak mengirim pesan pemberitahuan ketika pengguna mengklik item menu.
TPM_RETURNCMD
0x0100L
Fungsi mengembalikan pengidentifikasi item menu pilihan pengguna dalam nilai yang dikembalikan.
 

Gunakan salah satu bendera berikut untuk menentukan tombol mouse mana yang dilacak menu pintasan.

Nilai Makna
TPM_LEFTBUTTON
0x0000L
Pengguna dapat memilih item menu hanya dengan tombol kiri mouse.
TPM_RIGHTBUTTON
0x0002L
Pengguna dapat memilih item menu dengan tombol mouse kiri dan kanan.
 

Gunakan kombinasi yang wajar dari bendera berikut untuk mengubah animasi menu. Misalnya, dengan memilih bendera horizontal dan vertikal, Anda dapat mencapai animasi diagonal.

Nilai Makna
TPM_HORNEGANIMATION
0x0800L
Menganimasikan menu dari kanan ke kiri.
TPM_HORPOSANIMATION
0x0400L
Menganimasikan menu dari kiri ke kanan.
TPM_NOANIMATION
0x4000L
Menampilkan menu tanpa animasi.
TPM_VERNEGANIMATION
0x2000L
Menganimasikan menu dari bawah ke atas.
TPM_VERPOSANIMATION
0x1000L
Menganimasikan menu dari atas ke bawah.
 

Agar animasi terjadi, fungsi SystemParametersInfo harus mengatur SPI_SETMENUANIMATION. Selain itu, semua bendera TPM_*ANIMATION , kecuali TPM_NOANIMATION, diabaikan jika animasi pudar menu aktif. Untuk informasi selengkapnya, lihat bendera SPI_GETMENUFADE di SystemParametersInfo.

Gunakan bendera TPM_RECURSE untuk menampilkan menu saat menu lain sudah ditampilkan. Ini dimaksudkan untuk mendukung menu konteks dalam menu.

Gunakan salah satu bendera berikut untuk menentukan apakah akan mengakomodasi perataan horizontal atau vertikal.

Nilai Makna
TPM_HORIZONTAL
0x0000L
Jika menu tidak dapat ditampilkan di lokasi yang ditentukan tanpa menumpuk persegi panjang yang dikecualikan, sistem mencoba mengakomodasi perataan horizontal yang diminta sebelum perataan vertikal yang diminta.
TPM_VERTICAL
0x0040L
Jika menu tidak dapat ditampilkan di lokasi yang ditentukan tanpa menumpuk persegi panjang yang dikecualikan, sistem mencoba mengakomodasi perataan vertikal yang diminta sebelum perataan horizontal yang diminta.
 

Persegi panjang yang dikecualikan adalah bagian dari layar yang tidak boleh tumpang tindih oleh menu; ditentukan oleh parameter lptpm .

Untuk tata letak teks kanan-ke-kiri, gunakan TPM_LAYOUTRTL. Secara default, tata letak teks adalah kiri-ke-kanan.

[in] x

Jenis: int

Lokasi horizontal menu pintasan, dalam koordinat layar.

[in] y

Jenis: int

Lokasi vertikal menu pintasan, di koordinat layar.

[in] hwnd

Jenis: HWND

Handel ke jendela yang memiliki menu pintasan. Jendela ini menerima semua pesan dari menu. Jendela tidak menerima pesan WM_COMMAND dari menu hingga fungsi kembali. Jika Anda menentukan TPM_NONOTIFY dalam parameter fuFlags , fungsi tidak mengirim pesan ke jendela yang diidentifikasi oleh hwnd. Namun, Anda masih harus melewati handel jendela di hwnd. Ini bisa menjadi handel jendela apa pun dari aplikasi Anda.

[in, optional] lptpm

Jenis: LPTPMPARAMS

Penunjuk ke struktur TPMPARAMS yang menentukan area layar menu tidak boleh tumpang tindih. Parameter ini bisa NULL.

Mengembalikan nilai

Jenis: BOOL

Jika Anda menentukan TPM_RETURNCMD dalam parameter fuFlags , nilai yang dikembalikan adalah pengidentifikasi item menu item yang dipilih pengguna. Jika pengguna membatalkan menu tanpa membuat pilihan, atau jika terjadi kesalahan, nilai yang dikembalikan adalah nol.

Jika Anda tidak menentukan TPM_RETURNCMD dalam parameter fuFlags , nilai yang dikembalikan bukan nol jika fungsi berhasil dan nol jika gagal. Untuk mendapatkan informasi kesalahan yang diperluas, hubungi GetLastError.

Keterangan

Panggil GetSystemMetrics dengan SM_MENUDROPALIGNMENT untuk menentukan bendera perataan horizontal yang benar (TPM_LEFTALIGN atau TPM_RIGHTALIGN) dan/atau bendera arah animasi horizontal (TPM_HORPOSANIMATION atau TPM_HORNEGANIMATION) untuk diteruskan ke TrackPopupMenu atau TrackPopupMenuEx. Ini sangat penting untuk menciptakan pengalaman pengguna yang optimal, terutama saat mengembangkan aplikasi PC Tablet Microsoft.

Untuk menampilkan menu konteks untuk ikon pemberitahuan, jendela saat ini harus merupakan jendela latar depan sebelum aplikasi memanggil TrackPopupMenu atau TrackPopupMenuEx. Jika tidak, menu tidak akan hilang ketika pengguna mengklik di luar menu atau jendela yang membuat menu (jika terlihat). Jika jendela saat ini adalah jendela anak, Anda harus mengatur jendela induk (tingkat atas) sebagai jendela latar depan.

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Windows 2000 Professional [hanya aplikasi desktop]
Server minimum yang didukung Windows 2000 Server [hanya aplikasi desktop]
Target Platform Windows
Header winuser.h (sertakan Windows.h)
Pustaka User32.lib
DLL User32.dll
Set API ext-ms-win-ntuser-menu-l1-1-1 (diperkenalkan dalam Windows 8.1)

Lihat juga

Konseptual

CreatePopupMenu

GetSubMenu

Menu

Referensi

TPMPARAMS

WM_COMMAND