Tutorial – Write Icon in the Taskbar Window

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;
}

Downloads

Download source - 34 Kb

More by Author

Must Read