class CTaskbarIcon{
protected:
NOTIFYICONDATA m_data;
BOOL m_show;
public:
CTaskbarIcon(HWND hwnd = NULL,UINT id = 0,UINT msg = 0,HICON icon = NULL,LPSTR tip = NULL);
~CTaskbarIcon();
BOOL Create(HWND hwnd,UINT id,UINT msg = 0,HICON icon = NULL,LPSTR tip = NULL);
BOOL Add();
BOOL Delete();
BOOL Modify();
BOOL SetMessage(UINT msg,BOOL refresh = TRUE);
HICON SetIcon(HICON icon,BOOL refresh = TRUE);
BOOL SetTip(LPSTR tip,BOOL refresh = TRUE);
};
0007.lzh タスクバークラス(1KB)
// ウィンドゥに渡すタスクトレイメッセージ(WM_USERを使用してカスタマイズします)
#define WM_USER_TASKBAR (WM_USER + 1)
// タスクトレイオブジェクト
CTaskbarIcon ticon;
// 以下は、タスクトレイに対する通知メッセージの処理方法です。
LRESULT CALLBACK WindowProc(HWND hwnd,UINT msg,WPARAM wparam,LPARAM lparam)
{
switch(msg){
case WM_USER_TASKBAR:
if(wparam == WM_LBUTTONDOWN){
// タスクトレイをクリックしたとき、ポップアップメニューを表示
POINT point;
SetForegroundWindow(hwnd);
GetCursorPos(&point);
TrackPopupMenu(menu,TPM_RIGHTBUTTON,point.x,point.y,0,hwnd,NULL);
}
break;
}
return 0;
}
// タスクトレイの表示方法です。
// MainWindowに生成済みのウィンドゥもしくはダイアログのハンドルが格納されている事を前提としています。
HICON icon = LoadIcon(GetModuleHandle(NULL),"TASKICON"); // アイコンのロード
ticon.Create(MainWindow,1,WM_USER_TASKBAR,icon,"Taskbar");
ticon.Add();
// タスクトレイの削除方法です。
// この処理を行わないと、タスクトレイからアイコンが消えません。
ticon.Delete();