Intereting Posts
Несколько родных модhive в Android Studio Запуск программы консоли C ++ в полноэкранном режиме Есть ли способ вытащить текстовый ресурс в строковый строковый литерал с использованием предварительного процессора? Методы classа шаблона C ++, которые не используют параметр шаблона c ++ dynamic_cast обработка ошибок Как обращаться с этим «указателем» в конструкторе? Swig: конвертировать возвращаемый тип std :: string в java byte Получить функцию arity из параметра шаблона EXC_BAD_ACCESS при использовании std :: function w / std :: bind Как узнать, запущено ли приложение C ++ в качестве службы Windows? Риск повреждения вашего компьютера путем изменения памяти в C ++ STL-совместимые iteratorы для пользовательских контейнеров Как оценивается оператор приращения postfix и prefix в выражении? Экран Продвижение Провайдера учетных данных Windows C ++ Порядок коммутативных математических операций

Как проверить, находится ли мышь над элементом управления

Как проверить, находится ли мышь над определенным HWND? Я попытался использовать сообщения WM_MOUSELEAVE и WM_MOUSEMOVE для отслеживания, но если вы нажмете кнопку и вытащите мышь из кнопки, она не получит WM_MOUSELEAVE, пока мышь не будет отпущена, а это слишком поздно, потому что:

Когда вы нажимаете кнопку, сообщение WM_COMMAND отправляется только в том случае, если:
1. Мышь была первоначально нажата над кнопкой
2. Мышь над кнопкой
3. Мышь отпускается над кнопкой

Мне нужно повторить эту функцию.

    Чтобы дублировать эту функцию, просто вызовите SetCapture() чтобы сообщения мыши были отправлены в ваше окно, даже если мышь оставила его. Вы можете прочитать текущую позицию мыши при ее перемещении и определить, все еще находится над вашим окном / кнопкой (я все еще не уверен на 100%, что вы делаете). И, когда кнопка мыши отпущена, вы можете вызвать ReleaseCapture() для восстановления сообщений мыши.

    EDIT: О, и вы можете использовать функцию Windows API WindowFromPoint() чтобы определить, в каком окне находится мышь.

    Это встроено в Windows, оно называется «захват мыши», SetCapture (hWnd). Он обеспечивает получение сообщений мыши, даже если мышь перемещается за пределы windows. Вы вызываете его в сообщении сообщения WM_LBUTTONDOWN.