Udostępnij przez


komunikat WM_MENUSELECT

Wysłane do okna właściciela menu, gdy użytkownik wybierze element menu.

#define WM_MENUSELECT                   0x011F

Parametry

wParam

Wyraz o niskiej kolejności określa element menu lub indeks podrzędny. Jeśli wybrany element jest elementem polecenia, ten parametr zawiera identyfikator elementu menu. Jeśli wybrany element otworzy menu rozwijane lub podmenu, ten parametr zawiera indeks menu rozwijanego lub podmenu w menu głównym, a parametr lParam zawiera uchwyt do menu głównego; użyj funkcji GetSubMenu , aby pobrać uchwyt menu do menu rozwijanego lub podmenu.

Wyraz o wysokiej kolejności określa co najmniej jedną flagę menu. Ten parametr może być co najmniej jedną z następujących wartości.

Wartość Meaning
MF_BITMAP
0x00000004L
Element wyświetla mapę bitową.
MF_CHECKED
0x000000008L
Element jest zaznaczony.
MF_DISABLED
0x00000002L
Element jest wyłączony.
MF_GRAYED
0x00000001L
Element jest szary.
MF_HILITE
0x00000080L
Element jest wyróżniony.
MF_MOUSESELECT
0x000080000L
Element jest zaznaczony za pomocą myszy.
MF_OWNERDRAW
0x00000100L
Element jest elementem rysowanym przez właściciela.
MF_POPUP
0x00000010L
Element otwiera menu rozwijane lub podmenu.
MF_SYSMENU
0x00002000L
Element jest zawarty w menu okna. Parametr lParam zawiera uchwyt do menu skojarzonego z komunikatem.

lParam

Uchwyt do menu głównego.

Wartość zwracana

Jeśli aplikacja przetwarza ten komunikat, powinna zwrócić zero.

Uwagi

Ta wiadomość jest wysyłana do okna właściciela menu, gdy użytkownik wybierze element menu w otwartym menu, zazwyczaj za pomocą myszy lub nawigacji za pomocą klawiatury. Jeśli menu zostanie zamknięte, ten komunikat nie zostanie wysłany, gdy użytkownik przenosi wskaźnik myszy nad elementem menu najwyższego poziomu. Ta wiadomość jest wysyłana dopiero po otwarciu menu przez użytkownika klikając element menu najwyższego poziomu lub naciskając ALT .

Ważne

Gdy użytkownik kliknie element menu lub naciśnie Enter , aby wywołać wybrany element menu, WM_COMMAND lubWM_MENUCOMMAND komunikat jest wysyłany do okna, w zależności od wartości elementu członkowskiego dwStyle struktury MENUINFO dla menu. Użyj tych komunikatów, aby wykonać akcję po wywołaniu wybranego polecenia.

Jeśli wyraz o wysokiej kolejności wParam zawiera 0xFFFF, a parametr lParam zawiera wartość NULL, system zamknął menu.

Nie należy używać wartości -1 dla słowa o wysokiej kolejności wParam, ponieważ ta wartość jest określona jako (UINT) HIWORD(wParam). Mimo że 0xFFFF można interpretować jako -1 w podpisanych kontekstach, jeśli wartość jest 0xFFFF, będzie interpretowana jako 0x0000FFFF, a nie -1, ze względu na rzutowanie do interfejsu użytkownika.

Na przykład ten kod sprawdza 0xFFFF, a nie -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;
}

Requirements

Wymaganie Wartość
Minimalny obsługiwany klient
Windows 2000 Professional [tylko aplikacje klasyczne]
Minimalny obsługiwany serwer
Windows 2000 Server [tylko aplikacje klasyczne]
Header
Winuser.h (uwzględnij windows.h)

Zobacz także

Referencja

GetSubMenu

HIWORD

LOWORD

Koncepcje

Akceleratory klawiatury