私はリストとカスタムスクロールバーを持つパネルであるカスタムWTLコントロールを持っています。子ウィンドウがマウスイベントを受信できないのはなぜですか?
class Panel
: public ATL::CWindowImpl<Panel>, public WTL::CDoubleBufferImpl<Panel> {
public:
DECLARE_WND_CLASS("Panel")
BEGIN_MSG_MAP_EX(Panel)
MSG_WM_CREATE(OnCreate)
MSG_WM_DESTROY(OnDestroy)
MSG_WM_SIZE(OnSize)
CHAIN_MSG_MAP(CDoubleBufferImpl<Panel>)
REFLECT_NOTIFICATIONS()
END_MSG_MAP()
スクロールバーがOnCreate関数()でパネルによって作成されます。バーをスクロール
m_scrollBar.Create(m_hWnd, WTL::CRect(...));
は、他の多くのダイアログウィンドウで正常に動作します。しかし、そのパネルコントロール内では、スクロールバーが表示されますが、マウスイベントはまったく受け取りません。パネルにWM_MOUSEMOVE
ハンドラを追加すると、それが呼び出されます。
何が問題なのですか?
親コントロールがその領域のすべてのウィンドウメッセージをスワールすることはできますか? – RobS
いいえリストはマウスイベントを受け取ります。スクロールバークラスが問題でした。下の私の答えを見てください。 –