Tutorial - Write Icon in the Taskbar Window
Posted
by Roberto Cagnetti
on November 2nd, 2001
Environment: VC6 SP4, W9x, NT 4
This simple program code show how to write or remove an icon from the window taskbar and add a tool tip text. It also show how you can define a user message for trap events generate with mouse action (click on the icon). The sample application is an MFC exe dialog based program.

The routine for write and remove icon:
void CWriteTaskBarDlg::OnWrite()
{
// handle to icon
HICON hIcon;
// text for tool tip
char lpszTip[] = "Mouse is on the Icon !!";
HINSTANCE hInst =
AfxFindResourceHandle(MAKEINTRESOURCE(IDI_ICON1),
RT_GROUP_ICON);
hIcon = (HICON)LoadImage( hInst,
MAKEINTRESOURCE(IDI_ICON1),
IMAGE_ICON,
16,
16,
LR_DEFAULTCOLOR);
// set NOTIFYCONDATA structure
NOTIFYICONDATA tnid;
tnid.cbSize = sizeof(NOTIFYICONDATA);
tnid.hWnd = m_hWnd;
tnid.uID = IDI_ICON1;
tnid.uFlags = NIF_MESSAGE | NIF_ICON | NIF_TIP;
tnid.uCallbackMessage = WM_TASKBAR; // my user message
tnid.hIcon = hIcon;
if (lpszTip)
lstrcpyn(tnid.szTip, lpszTip, sizeof(tnid.szTip));
else
tnid.szTip[0] = '\0';
// call to Shell_NotifyIcon with NIM_ADD parameter
Shell_NotifyIcon(NIM_ADD, &tnid);
// free icon
if (hIcon)
DestroyIcon(hIcon);
}
For remove icon:
void CWriteTaskBarDlg::OnRemove()
{
// for remove, only provide cbSize, hWnd and uID!
NOTIFYICONDATA tnid;
tnid.cbSize = sizeof(NOTIFYICONDATA);
tnid.hWnd = m_hWnd;
tnid.uID = IDI_ICON1;
// call to Shell_NotifyIcon with NIM_DEL parameter
Shell_NotifyIcon(NIM_DELETE, &tnid);
}
For Mouse Message:
LRESULT CWriteTaskBarDlg::OnTaskbar(WPARAM wParam,
LPARAM lParam)
{
UINT uMouseMsg = (UINT) lParam;
switch (uMouseMsg)
{
case WM_LBUTTONDOWN:
AfxMessageBox("Mouse click on the Icon !");
break;
default: break;
}
return 0;
}

Comments
There are no comments yet. Be the first to comment!