タスクトレイ・アイコン上でマウス・イベントが発生すると指定のウインドウにユーザ定義メッセージが届きます。
このメッセージはShell_NotifyIcon()関数で追加したときのuCallbackMessageメンバの定数値が送られます。
またメッセージ処理内ではwParamにアイコン識別コード(uID)、lParamにはマウス・メッセージ(WM_RBUTTONDOWN)が渡されます。
メッセージ処理内ではマウスの座標が分からないので必要なときはGetCursorPos()関数などで取得する必要があります。(戻る)
サンプル
// 複数のアイコンを識別するためのID定数 #define ID_TRAYICON (1) // タスクトレイのマウスメッセージの定数 #define WM_TASKTRAY (WM_APP + 1) // ユーザ定義のメッセージ処理 case WM_TASKTRAY: if ( wParam == ID_TRAYICON ){ // アイコンの識別コード switch ( lParam ){ case WM_MOUSEMOVE: /* マウス移動の処理 */ break; case WM_LBUTTONUP: /* 左ボタンが離された処理 */ break; case WM_RBUTTONUP: /* 右ボタンが離された処理 */ break; case WM_MBUTTONUP: /* 中ボタンが離された処理 */ break; case WM_LBUTTONDOWN: /* 左ボタンが押された処理 */ break; case WM_RBUTTONDOWN: /* 右ボタンが押された処理 */ break; case WM_MBUTTONDOWN: /* 中ボタンが押された処理 */ break; case WM_LBUTTONDBLCLK: /* 左ダブルクリックされた処理 */ break; case WM_RBUTTONDBLCLK: /* 右ダブルクリックされた処理 */ break; case WM_MBUTTONDBLCLK: /* 中ダブルクリックされた処理 */ break; default: /* 上記以外の処理 */ break; } } break;
- 複数のアイコンがある場合はwParam引数からアイコンの識別コードをチェックして処理を分岐します。
- 実際には必要なアクションのマウスメッセージのみを記述して下さい。
- 必要がない場合には記述しなくてかまいません。
※コメント投稿者のブログIDはブログ作成者のみに通知されます