Кто сталкивался с проблемой получения сообщений для отдельных пунктов меню? Нужно ловить сообщения прихода и ухода мыши с пунктов меню. Есть ли возможность осуществления этого?
IceStudent Мне не нужно заменять стандартное рисование пунктов. Мне нужно просто получать сообщения от системы (или реализовать аналоги) о приходе курсора мыши на конкретный элемент меню и об уходе курсора с него. Или хотя бы о движений в данный момент курсора над элементом меню.
IceStudent Это сообщение посылается родительскому окну при выборе элемента меню. А мне нужны сообщения просто о НАХОЖДЕНИИ курсора над элементом. Ну и ухода с элемента/перехода на другой.
WM_MENUSELECT как раз то, что тебе надо. С помощи него можно определить и “приход” и “уход” курсора с пункта меню. Расскажи конкретней, что тебе надо?
l_inc Э... Да, точно. Неправильно перевел. Сначала понял, что сообщение вызывается при нажатии, а не простом наведении. Полезное сообщение, но вот как в данном случае (его использовании) ловить уход курсора из пределов меню? P.S. Может можно как-то получить handle меню как окна?
Можно вот так: .if flag==FALSE ;Курсор “пришел” на меню mov flag,TRUE .else ; Курсор “ушел” с меню mov flag,FALSE .endif P.S. http://www.codeproject.com/menu/menuitemtooltip.asp
Простор для воображения. Можно, хотя это хак, основанный на том, что (теоретически) должно быть только 1 меню на десктоп: по WM_INITMENU[POPUP] искать соответствующий класс меню как окна и работать уже с ним. Это было тоже на codeproject, в разделе, посвящённом менюшкам.
IceStudent Да идей много. Просто, может кто чего умного предложит А второе попробую и отпишу результаты...
Кстати, тут одна проблемка. Я использую в качестве ID создаваемых пунктов меню DWORD (храню HWND'шки). А в сообщениии WM_MENUSELECT это значение передается в LOWORD(wParam)... Я чего-то недопонял или мне придется создавать некий массив HWND'шек, а при создании пункта передавать ключи массива (хеша в данном случае)? Или может можно как-нить впихнуть HWND в WORD? Может там выравнивание какое типа 0XXXX0000h или еще что-то подобное... Или может можно задать пункту меню дополнительные пользовательские данные... P.S. Уже разобрался... Если кому интересно: Код (Text): SetMenuItemInfo(..., MENUITEMINFO.dwItemData)
В ID надо класть просто уникальный идентификатор, а свои данные (HWND, указатель на структуру какую-то) класть в MENUITEMINFO.dwItemData.