タスクトレイにアイコンを表示する

タスクトレイを扱う関数に以下のものがあります

 Shell_NotifyIcon(DWORD dwMessage,PNOTIFYICONDATA pnid);

第一引数

dwMessage  タスクトレイに何をするかを指定する(3つのうちいずれか)

NIM_ADD タスクトレイにアイコンを追加する
NIM_DELETE タスクトレイからアイコンを削除する
NIM_MODIFY  タスクトレイにあるアイコンの状態を変更する

第二引数

pnid  NOTIFYICONDATA構造体へのポインタ

構造体の説明

DWORD cbSize 構造体のサイズ
HWND hwnd タスクトレイに関するメッセージを受け取るウィンドウのハンドル
UINT uID タスクトレイのアイコンに割り当てるID
UINT uFlags 有効にさせるデータの種類(メッセージ,アイコン,ツールチップ)
UINT uCallbackMessage コールバックメッセージのID
HICON hIcon 表示するアイコンのハンドル
char szTip[64] アイコンに表示するツールチップ(テキスト)

では、プログラムリストと共に見ていきましょう

プログラム部分

 
 NOTIFYICONDATA nid;

 nid.cbSize=sizeof(NOTIFYICONDATA);

 nid.hWnd=hwnd;

 nid.uID=ID_TASK;//ID_TASKはこのアイコンに割り当てたID(自分で定義する)

 nid.uFlags =NIF_MESSAGE | NIF_TIP | NIF_ICON;//メッセージとツールチップとアイコンを有効にする

 nid.uCallbackMessage = MYWM_NOTIFYICON;//ウィンドウに送られるメッセージのID(自分で定義する)

 nid.hIcon=LoadIcon(hinst,MAKEINTRESOURCE(IDI_ICON1));

 strcpy(nid.szTip,"ここにメッセージを書くの");

 Shell_NotifyIcon(NIM_ADD,&nid);//NIM_ADDなのでアイコンをタスクトレイに加える

これで、アイコンがタスクトレイに登録されるはずです。
アイコンのスペースはできたが何も出てこない場合は、アイコンの 読み込みが失敗している可能性があります。

次のテクニックで、タスクトレイに関するメッセージを処理するプログラムを紹介します

戻る