Мой вопрос: как я постоянно получаю позицию мыши, даже если она не находится в каких-либо диалогах, в mfc?
Вы всегда можете установить крючок для мыши. Это немного перебор, но, это даст вам то, что вы хотите.
Это зависит от ваших конкретных требований. Если вам нужно временно направить мышь на элемент управления, вы можете вызвать SetCapture
. Это потребует, чтобы система отправила все сообщения мыши в определенное окно, пока вам не понадобится больше времени, вызвав ReleaseCapture
, или вы потеряете его, когда другое окно получает фокус ввода. Последнее сигнализируется через сообщение WM_CAPTURECHANGED
.
Если, с другой стороны, вам нужна непрерывная информация о положениях мыши, вы можете установить таймер ( SetTimer
) и вызвать GetCursorPos
.
SetCapture
- не очень надежное решение. Вы не можете контролировать, когда теряете захват мыши. Вы получаете уведомление, когдаWM_CAPTURECHANGED
его (WM_CAPTURECHANGED
), но не можете предотвратить его. Плюс, это ограничено окнами переднего плана.