トレイアイコンの描画機能:
-------------------------------------------------
WINSHELLAPI BOOL WINAPI Shell_NotifyIcon(
DWORD dwMessage、
PNOTIFYICONDATA PNID
);
最初のパラメータは、システムにメッセージを配信する責任があります
NIM_ADD
トレイ領域にアイコンを追加します。このとき、第2パラメータ lpdataは指摘NOTIFYICONDATA 構造体のhWndのUIDメンバーを、アイコン、この操作後に再び使用Shell_NotifyIconのアイコンを示すために使用されます。
NIM_DELETE
アイコントレイエリアを削除します。この第二の引数で NOTIFYICONDATA構造のhWnd部材とUIDにlpdata点を削除するには、このアイコンをマークするために使用されます。
NIM_MODIFY
トレイアイコン領域を変更します。このとき、第2パラメータ NOTIFYICONDATAのlpdata構造は、hWndをとUIDメンバーによって指さ指定されたアイコン用に変更する必要があります。
2番目のパラメータはある NOTIFYIONDATA構造!
typedefは構造体の_NOTIFYICONDATA {
DWORD cbSizeの; //サイズ構造
HWND hWndは; //ハンドル
UINTユビキタスID;
UINT uFlags; //このメンバは、正確にどの法律上のデータの他のメンバーを(つまり、その仕事のメンバーである)を示しています。
UINT uCallbackMessage; //アプリケーション定義のメッセージラベル。
HICON HICON;
TCHAR szTip [64]。
DWORD dwState;
DWORD dwStateMask;
TCHAR szInfo [256]。
組合{
UINT uTimeout;
UINT uVersion;
}。
================================================
具体的な使用方法
================================================
1.(ファイルの先頭にヘッダで定義することができる)マークメッセージを定義
#define MYWM_NOTIFYICONのWM_USER + 5
2.ボタンの応答メッセージ
空CMyPlayerDlg :: CreateNotifyIcon()
{
NOTIFYICONDATA ND;
//割り当て-----
nd.cbSize =はsizeof(NOTIFYICONDATA)。
nd.hWnd = m_hWndを。
nd.uID = IDI_ICON。
nd.uFlags = NIF_ICON | NIF_MESSAGE | NIF_TIP;
nd.uCallbackMessage = MYWM_NOTIFYICON; //メッセージ旗
nd.hIcon = m_hIcon。
strcpyの(nd.szTip、 "スター・メロディ")。
Shell_NotifyIcon(NIM_ADD、&ND);
}
3.OnInitDialog()関数呼び出しCreateNotifyIcon()
BOOL CMyPlayerDlg :: OnInitDialogを()
{
....
CreateNotifyIcon()
....
}
4.非表示のウィンドウメッセージに応答してボタンを追加します。
CMyPlayerDlg :: OnBtnHideを無効()
{
// TODO:ここにコントロール通知ハンドラコードを追加します。
ShowWindow(SW_HIDE)。
}
================================================== ============
マウスクリックトレイアイコンメッセージに応答
================================================== ============
5.ヘッダファイル内のメッセージ機能を追加
// {{AFX_MSG(CMyPlayerDlg)
AFX_MSGボイドOnNotifyIcon(WPARAM wParamに、LPARAM lParamに)。
//}} AFX_MSG
6.ソース・ファイルにメッセージマップを追加します。
BEGIN_MESSAGE_MAP(CMyPlayerDlg、CDialogの)
// {{AFX_MSG_MAP(CMyPlayerDlg)
ON_MESSAGE(MYWM_NOTIFYICON、OnNotifyIcon)
//}} AFX_MSG_MAP
END_MESSAGE_MAP()
7.特定のメッセージ応答関数の内容を追加します。
空CMyPlayerDlg :: OnNotifyIcon(WPARAM wParamに、LPARAM lParamに)
{
もし(lParamに== WM_LBUTTONDBLCLK)
{
UINT MODE;
?MODE = IsWindowVisible()SW_HIDE:SW_SHOW; //ウィンドウ表示するかどうかを判断します
ShowWindow(MODE)。
}
}