ホイールイベントはフォーカスを持つウィンドウで優先的に処理されるようなのですが、場合によってはフォーカスよりもマウスカーソル位置を優先したい事があります。

今まで結構回りくどいやり方をしていたのですが、PreTranslateMessageにちょろっと書いたら上手く動いたようなので、載せておきます。
(あまり動作検証していませんが)

BOOL CMainFrame::PreTranslateMessage(MSG* pMsg)
{
	if (pMsg->message == WM_MOUSEWHEEL) {
		CWnd* pWnd = WindowFromPoint(pMsg->pt);
		if (pWnd && IsChild(pWnd)) {
			pMsg->hwnd = pWnd->GetSafeHwnd();
		}
	}

	return __super::PreTranslateMessage(pMsg);
}

記事検索

アーカイブ