メッセージフックについて

[戻る]
Ton 2008/09/08(月) 20:26:01
Windows Vistaで、タスクトレーの時計を左クリックしたときに
自分の作ったアナログ時計を表示しようとしています。

以下のように行いましたが、マウスのイベントがキャプチャできません。

1.時計(TrayClockWClass)のウィンドウハンドル hwnd を取得

2.id = GetWindowThreadProcessId(hwnd);
 SetWindowsHookEx(WH_CALLWNDPROC, callback, g_hIns, id);
 を行い、
 このウィンドウに対してフックして、適当なメッセージをポストしたタイミングで
 callback関数内でhwndをサブクラス化します。

3.2でサブクラス化したプロシジャにWM_LBUTTONDOWNが来ると思ったのですが、
 WM_NCHITTESTは来ますが、WM_LBUTTONDOWNが来ません。
 callback にも来ていません。

SPY++というツールで調べてみましたが、やはりWM_NCHITTESTしか来ていません。
ウィンドウの上でマウスを動かしたりすると、そのウィンドウの
プロシジャでWM_MOUSEMOVEなどを取得できると思ったのですが、
何か他にすることがあるのでしょうか?

また、TClockを起動しているとWM_MOUSEMOVEが来ます。

Ton 2008/09/09(火) 08:09:35
[[解決]]
マウスもグローバルフックすることで解決させました。

古いスレッドには追加発言できません。