您可以通过填写NOTIFYICONDATA结构,然后通过NIM_ADD消息发送结构,将图标添加到任务栏状态区域。结构成员必须指定添加图标的窗口的句柄,以及图标标识符和图标句柄。您还可以为图标指定工具提示文本。如果您需要接收图标的鼠标消息,请指定系统应将消息发送到窗口过程的回调消息的标识符。
以下示例中的功能演示如何将图标添加到任务栏。
// MyTaskBarAddIcon - 将图标添加到任务栏状态区域。
//如果成功返回TRUE,否则返回FALSE。
// hwnd - 窗口的句柄来接收回调消息
// uID - 图标的标识符
// hicon - 要添加的图标的句柄
// lpszTip - ToolTip文本
BOOL MyTaskBarAddIcon(HWND hwnd, UINT uID, HICON hicon, LPSTR lpszTip)
{
BOOL res;
NOTIFYICONDATA tnid;
tnid.cbSize = sizeof(NOTIFYICONDATA);
tnid.hWnd = hwnd;
tnid.uID = uID;
tnid.uFlags = NIF_MESSAGE | NIF_ICON | NIF_TIP;
tnid.uCallbackMessage = MYWM_NOTIFYICON;
tnid.hIcon = hicon;
如果(lpszTip)
lstrcpyn(tnid.szTip, lpszTip, sizeof(tnid.szTip));
其他
tnid.szTip[0] = '\0';
res = Shell_NotifyIcon(NIM_ADD, &tnid);
如果(hicon)
DestroyIcon(hicon);
return res;
}
要从任务栏状态区域删除图标,请填写NOTIFYICONDATA结构,并在发送NIM_DELETE消息时将其发送到系统。删除任务栏图标时,仅指定CBSIZE,的hWnd和uID成员,如以下示例所示。
// MyTaskBarDeleteIcon - 从任务栏中删除一个图标
//状态区域。
//如果成功返回TRUE,否则返回FALSE。
// hwnd - 添加图标的窗口的句柄
// uID - 要删除的图标的标识符
BOOL MyTaskBarDeleteIcon(HWND hwnd, UINT uID)
{
BOOL res;
NOTIFYICONDATA tnid;
tnid.cbSize = sizeof(NOTIFYICONDATA);
tnid.hWnd = hwnd;
tnid.uID = uID;
res = Shell_NotifyIcon(NIM_DELETE, &tnid);
return res;
}