タスクトレイを扱う関数に以下のものがあります
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なのでアイコンをタスクトレイに加える
|
これで、アイコンがタスクトレイに登録されるはずです。
アイコンのスペースはできたが何も出てこない場合は、アイコンの
読み込みが失敗している可能性があります。
次のテクニックで、タスクトレイに関するメッセージを処理するプログラムを紹介します