|
// 〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
// 0. ウインドウクラスのヘッダ(〜Dlg.h等)で、以下の★の
// 箇所を定義する。
// 〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
// ★★★ タスクトレイクリック用ウインドウメッセージID
#define WM_TASKTRAYCLICK WM_APP + 1
class CTaskTrayDlg : public CDialog
{
public:
CTaskTrayDlg(CWnd* pParent = NULL);
enum { IDD = IDD_TASKTRAY_DIALOG };
//{{AFX_VIRTUAL(CTaskTrayDlg)
protected:
virtual void DoDataExchange(CDataExchange* pDX);
//}}AFX_VIRTUAL
protected:
HICON m_hIcon;
//{{AFX_MSG(CTaskTrayDlg)
virtual BOOL OnInitDialog();
afx_msg void OnPaint();
afx_msg HCURSOR OnQueryDragIcon();
afx_msg void OnTaskTray();
afx_msg void OnDestroy();
//}}AFX_MSG
// ★★★ タスクトレイクリック用メッセージマップ関数
afx_msg void OnTaskTrayClick(
WPARAM wParam, LPARAM lParam);
DECLARE_MESSAGE_MAP()
private:
// ★★★ タスクトレイアイコンのオブジェクト
NOTIFYICONDATA m_objTaskTrayIcon;
};
// 〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
// 1. タスクトレイにアイコンを表示
// 〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
BOOL CTaskTrayDlg::OnInitDialog()
{
CDialog::OnInitDialog();
SetIcon(m_hIcon, TRUE); // 大きいアイコンを設定
SetIcon(m_hIcon, FALSE); // 小さいアイコンを設定
// ★★★ タスクトレイのアイコンを定義
m_objTaskTrayIcon.cbSize = sizeof(m_objTaskTrayIcon);
m_objTaskTrayIcon.hWnd = this->m_hWnd;
m_objTaskTrayIcon.hIcon = this->GetIcon(false);
m_objTaskTrayIcon.uID = 1;
m_objTaskTrayIcon.uFlags
= NIF_ICON | NIF_MESSAGE | NIF_TIP;
m_objTaskTrayIcon.uCallbackMessage = WM_TASKTRAYCLICK;
strcpy(m_objTaskTrayIcon.szTip, "テスト1");
// ★★★タスクトレイにアイコン表示
Shell_NotifyIcon(NIM_ADD, &m_objTaskTrayIcon);
return TRUE;
}
// 〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
// 2. タスクトレイアイコンイベント処理
// 〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
void CTaskTrayDlg::OnTaskTrayClick(
WPARAM wParam, LPARAM lParam)
{
switch (lParam)
{
//左クリック
case WM_LBUTTONDOWN: // マウスダウン
break;
case WM_LBUTTONUP: // マウスアップ
break;
case WM_LBUTTONDBLCLK: // ダブルクリック
this->ShowWindow(1); // ウィンドウ表示
break;
//右クリック
case WM_RBUTTONDOWN: // マウスダウン
break;
case WM_RBUTTONUP: // マウスアップ
break;
case WM_RBUTTONDBLCLK: // ダブルクリック
break;
}
}
// 〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
// 3. タスクトレイのアイコンを消去
// 〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
void CTaskTrayDlg::OnDestroy()
{
CDialog::OnDestroy();
// ★★★ タスクトレイのアイコン消去
Shell_NotifyIcon(NIM_DELETE, &m_objTaskTrayIcon);
}
|