TrackPopupMenuEx 函式 (winuser.h)
在指定的位置顯示快捷方式功能表,並追蹤快捷方式功能表上的項目選取範圍。 快捷功能表可以出現在畫面上的任何位置。
語法
BOOL TrackPopupMenuEx(
[in] HMENU hMenu,
[in] UINT uFlags,
[in] int x,
[in] int y,
[in] HWND hwnd,
[in, optional] LPTPMPARAMS lptpm
);
參數
[in] hMenu
類型: HMENU
要顯示的快捷方式功能表句柄。 您可以藉由呼叫 CreatePopupMenu 函式來建立新的快捷方式功能表,或呼叫 GetSubMenu 函式來擷取與現有功能表項相關聯的子功能表句柄來取得此句柄。
[in] uFlags
類型: UINT
指定函式選項。
使用下列其中一個旗標來指定函式如何水準定位快捷方式功能表。
值 | 意義 |
---|---|
|
將快捷方式功能表水準置中,相對於 x 參數所指定的座標。 |
|
放置快捷方式功能表,使其左側對齊 x 參數所指定的座標。 |
|
放置快捷方式功能表,使其右側對齊 x 參數所指定的座標。 |
使用下列其中一個旗標來指定函式如何垂直放置快捷方式功能表。
值 | 意義 |
---|---|
|
放置快捷方式功能表,使其底部對齊 y 參數所指定的座標。 |
|
放置快捷方式功能表,使其頂端對齊 y 參數所指定的座標。 |
|
將快捷方式功能表垂直置中,相對於 y 參數所指定的座標。 |
使用下列旗標來控制用戶選取專案的探索,而不需要設定功能表的父視窗。
值 | 意義 |
---|---|
|
當使用者單擊功能表項時,函式不會傳送通知訊息。 |
|
函式會傳回傳回值中用戶選取範圍的功能表項標識碼。 |
使用下列其中一個旗標來指定快捷功能表追蹤的滑鼠按鈕。
值 | 意義 |
---|---|
|
用戶可以只選取滑鼠左鍵的功能表項。 |
|
用戶可以同時選取具有滑鼠左鍵和右鍵的功能表項。 |
使用下列旗標的任何合理組合來修改功能表的動畫。 例如,藉由選取水準和垂直旗標,即可達成對角動畫。
若要讓任何動畫發生, SystemParametersInfo 函式必須設定 SPI_SETMENUANIMATION。 此外,如果功能表淡化動畫開啟,除了TPM_NOANIMATION之外,所有TPM_*ANIMATION 旗標都會被忽略。 如需詳細資訊,請參閱 SystemParametersInfo 中的 SPI_GETMENUFADE 旗標。
當另一個功能表已經顯示時,請使用 TPM_RECURSE 旗標來顯示功能表。 這是為了支援功能表內的操作功能表。
使用下列其中一個旗標來指定是否要容納水準或垂直對齊方式。
值 | 意義 |
---|---|
|
如果在未重疊排除矩形的情況下,無法在指定的位置顯示功能表,系統會嘗試在要求的垂直對齊之前容納所要求的水準對齊方式。 |
|
如果在未重疊排除矩形的情況下,無法在指定的位置顯示功能表,系統會嘗試在要求的水準對齊之前容納要求的垂直對齊方式。 |
排除的矩形是功能表不應重疊的畫面部分;它是由 lptpm 參數所指定。
若為由右至左的文字版面配置,請使用 TPM_LAYOUTRTL。 根據預設,文字配置是由左至右。
[in] x
類型: int
快捷功能表的水準位置,以螢幕座標為單位。
[in] y
類型: int
快捷功能表的垂直位置,以螢幕座標為單位。
[in] hwnd
類型: HWND
擁有快捷功能表之視窗的句柄。 此視窗會從功能表接收所有訊息。 在函式傳回之前,視窗不會從功能表收到 WM_COMMAND 訊息。 如果您在 fuFlags 參數中指定TPM_NONOTIFY,函式不會將訊息傳送至 hwnd 所識別的視窗。 不過,您仍然必須在 hwnd 中傳遞視窗句柄。 它可以是來自您應用程式的任何視窗句柄。
[in, optional] lptpm
類型: LPTPMPARAMS
TPMPARAMS 結構的指標,指定功能表不應該重疊的螢幕區域。 此參數可以是 Null。
傳回值
類型: BOOL
如果您在 fuFlags 參數中指定TPM_RETURNCMD,則傳回值會是使用者所選取專案的功能表項識別碼。 如果使用者取消功能表而不進行選取,或發生錯誤,則傳回值為零。
如果您未在 fuFlags 參數中指定TPM_RETURNCMD,如果函式成功,則傳回值為非零,如果函式失敗則為零。 若要取得擴充的錯誤資訊,請呼叫 GetLastError。
備註
使用 SM_MENUDROPALIGNMENT 呼叫 GetSystemMetrics,以判斷正確的水準對齊旗標 (TPM_LEFTALIGN 或TPM_RIGHTALIGN) 和/或水平動畫方向旗標, (TPM_HORPOSANIMATION或TPM_HORNEGANIMATION) 傳遞至 TrackPopupMenu 或 TrackPopupMenuEx。 這是建立最佳用戶體驗的必要條件,特別是在開發 Microsoft 平板電腦應用程式時。
若要顯示通知圖示的操作功能表,目前窗口必須是前景視窗,應用程式呼叫 TrackPopupMenu 或 TrackPopupMenuEx。 否則,當使用者按單下功能表外部或建立功能表的視窗時,如果) 可見,功能表就不會消失 (。 如果目前的視窗是子視窗,您必須將最上層) 父視窗設定為前景視窗 (。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | Windows 2000 Professional [僅限傳統型應用程式] |
最低支援的伺服器 | Windows 2000 Server [僅限桌面應用程式] |
目標平台 | Windows |
標頭 | winuser.h (包含 Windows.h) |
程式庫 | User32.lib |
Dll | User32.dll |
API 集合 | ext-ms-win-ntuser-menu-l1-1-1 (在 Windows 8.1) 中引進 |
另請參閱
概念
參考