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