プログラミングのメモ帳(C/C++/HSP)

日々のプログラミングで気づいた点や小技集を紹介します。(Windows 10/XP/Vista、VC2017、HSP)

タスクトレイ・アイコンのメッセージ処理

2007年09月12日 15時40分45秒 | タスクバー関連

タスクトレイ・アイコン上でマウス・イベントが発生すると指定のウインドウにユーザ定義メッセージが届きます。
このメッセージは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引数からアイコンの識別コードをチェックして処理を分岐します。
  • 実際には必要なアクションのマウスメッセージのみを記述して下さい。
  • 必要がない場合には記述しなくてかまいません。

関連記事



コメント    この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« タスクトレイ・アイコンの変更 | トップ | スタートボタンのウインドウ取得 »
最新の画像もっと見る

コメントを投稿

タスクバー関連」カテゴリの最新記事