共用方式為


WM_MENUSELECT訊息

當使用者選取功能表項目時,傳送至功能表的擁有者視窗。

#define WM_MENUSELECT                   0x011F

參數

w參數

低階字會指定功能表項目或子功能表索引。 如果選取的項目是指令項目,則此參數會包含功能表項目的識別碼。 如果選取的專案開啟下拉式功能表或子功能表,則此參數會包含主功能表中下拉式功能表或子功能表的索引,而 lParam 參數會包含主功能表的控制碼;使用 GetSubMenu 函式來取得下拉式功能表或子功能表的功能表控制碼。

高階字會指定一或多個功能表旗標。 此參數可以是下列其中一或多個值。

價值觀 Meaning
MF_BITMAP
0x000000004公升
項目顯示點陣圖。
MF_CHECKED
0x00000008公升
項目已核對。
MF_DISABLED
0x000000002公升
項目已停用。
MF_GRAYED
0x00000001公升
項目呈灰色。
MF_HILITE
0x00000080公升
項目會反白顯示。
MF_MOUSESELECT
0x00008000公升
用滑鼠選取項目。
MF_OWNERDRAW
0x00000100公升
項目是擁有者繪製的項目。
MF_POPUP
0x00000010公升
項目會開啟下拉式功能表或子功能表。
MF_SYSMENU
0x00002000公升
項目包含在視窗功能表中。 lParam 參數包含與訊息相關聯的功能表控制碼。

l參數

主功能表的控點。

返回值

如果應用程式處理此訊息,它應該傳回零。

備註

當使用者在開啟的功能表中選取功能表項目時,通常會透過滑鼠懸停或鍵盤導覽,將此訊息傳送至功能表的擁有者視窗。 如果功能表已關閉,則當使用者將滑鼠移至最上層功能表項目上時,不會傳送此訊息。 只有在使用者按一下最上層功能表項目或按 ALT 鍵開啟功能表之後,才會傳送此訊息。

這很重要

當使用者按兩下功能表項目或按 Enter 鍵叫用選取的功能表項目時,系統會將WM_COMMANDWM_MENUCOMMAND訊息傳送至視窗,視功能表 MENUINFO 結構的 dwStyle 成員值而定。 使用這些訊息,在呼叫選取的指令時執行動作。

如果 wParam 的高階字包含 0xFFFF,且 lParam 參數包含 Null,則系統已關閉功能表。

請勿將值 -1 用於 wParam 的高階單字,因為此值會指定為 (UINT)HIWORDwParam) 。 即使 0xFFFF 在已簽署的內容中可能會解譯為 -1,但如果值是 0xFFFF,則會解譯為 0x0000FFFF,而不是 -1,因為轉換成 UINT

例如,這段程式碼檢查的是 0xFFFF,而不是 -1:

case WM_MENUSELECT:
{
    UINT menuItem = LOWORD(wParam);
    UINT flags = HIWORD(wParam);
    HMENU hMenu = (HMENU)lParam;

    // Check for 0xFFFF, not -1.
    if (flags == 0xFFFF && hMenu == NULL) {
        // No menu item selected (menu closed).
        // ...
    }
    break;
}

需求

Requirement 價值觀
最低支援的用戶端
Windows 2000 Professional [僅限傳統型應用程式]
最低支援的伺服器
Windows 2000 Server [僅限傳統型應用程式]
Header
Winuser.h (包括 Windows.h)

另請參閱

參考

取得子選單

海德

洛沃德

概念

鍵盤加速器