タスクバーのクリックを感知するには?

解決


よしろ  2002-12-02 16:16:04  No: 50774  IP: [192.*.*.*]

VisualStudio6.0のSDK環境でタクスバーの何もないところのクリックを感知することは可能でしょうか?
マウスフックを使えばできそうなのですがいまいちよくわかりません。

アドバイスをよろしくお願いします。

編集 削除
みけにゃん  URL  2002-12-05 16:37:37  No: 50775  IP: [192.*.*.*]

たぶんこれでいけると思います。
// ウィンドウプロシージャの変数定義部分におく
LPNMHDR lpnmhdr;

// タクスバーのクリックを感知
case WM_NOTIFY:
    lpnmhdr = (LPNMHDR)lParam;    // WndProcのLPARAMの値

    if(lpnmhdr->code == NM_CLICK && lpnmhdr->hwndFrom == hStatus){
        MessageBox(hWnd, "StatusBarがクリックされました", "TEST", MB_OK|MB_ICONINFORMATION);
    }

    break;

編集 削除
YuO  2002-12-05 18:12:44  No: 50776  IP: [192.*.*.*]

StatusBar != TaskBarですよ。

えーっと,MSDNでTaskBarを調べるとStatus Areaの話ばっかですな。
Application Tool Barの機能を使うことになりますが,
これはあくまで自分が作ったAppBarの為のもの。

というわけで,フックを仕掛けてください。

編集 削除
よしろ  2002-12-06 13:36:37  No: 50777  IP: [192.*.*.*]

みけにゃん様、YuO様、ありがとうございます。

フックを仕掛けようとしましたが何のフックでどのようなメッセージを処理すればよいのでしょうか?(WH_CALLWNDPROC、WH_MOUSE?)

初歩的な質問で申し訳ないのですが、よろしくお願いします。

編集 削除
みけにゃん  URL  2002-12-06 14:31:57  No: 50778  IP: [192.*.*.*]

はぅ〜StatusBarと間違ってしまいました。>TaskBar
う〜んタスクバーのフックは分からないです。

編集 削除
YuO  2002-12-06 19:21:50  No: 50779  IP: [192.*.*.*]

マウスメッセージが欲しいのですから,WH_MOUSEです。
処理するメッセージは,
クリックですからWM_LBUTTONDOWNとかWM_LBUTTONUPです。
#WM_LBUTTONCLICKが無いため,タスクトレイの動作がアプリによって異なる……。

あとは,TCM_HITTESTなんかも使うかな。

編集 削除
よしろ  2002-12-12 17:02:56  No: 50780  IP: [192.*.*.*]

WM_LBUTTONUPでできました。
ちなみにTCM_HITTESTは何に使うのでしょうか?

YuO様、ありがとうございました。

編集 削除
YuO  2002-12-12 17:04:52  No: 50781  IP: [192.*.*.*]

> ちなみにTCM_HITTESTは何に使うのでしょうか?

ボタンか否かを判別するのに使うかな,と思ったのですが。

編集 削除