Article ID: 162613 - View products that this article applies to.
This article was previously published under Q162613
One of the new features of the Windows 95, Windows 98, Windows Me, Windows NT 4.0, and Windows 2000 user interface is the taskbar status area. This article demonstrates how to use Visual Basic to add, modify, and delete status or notification indicators in the taskbar status area.
The taskbar status area is located to the right of the Start button, and provides you with status or notification indicators about your programs. Icons with ToolTips are typically used as indicators in the taskbar status area. The following are some examples of how to use the taskbar status area:
The next section explains the Shell_NotifyIcon function and the requirements to use this function.
Shell_NotifyIcon FunctionYou use the Shell_NotifyIcon function to send a message to a system to add, modify, or delete an icon from the taskbar status area. The function returns True if the message is sent successfully or False if the function is unsuccessful. The arguments of the functions are as follows:
dwMessage: A message to execute an action. This parameter can be one of the following values: NIM_ADD: Adds an icon to the status area. NIM_DELETE: Deletes an icon from the status area. NIM_MODIFY: Modifies an icon in the status area. The values of these messages can be found in the header file, Shellapi.h. pnid: A pointer to a NOTIFYICONDATA structure. To pass this argument to the function, create a user-defined data type called NOTIFYICONDATA (shown later in this section) and pass this data type by value.
The NOTIFYICONDATA structure contains the following elements:
cbSize: Passes the size of the NOTIFYICONDATA data type. Data Type: Long. Value: Use the Len function with the variable declared as this data type as the argument. hWnd: Handle of the window used to receive the notification message. Data Type: Long. Value: The hWnd property of the control used to receive this message. uId: Identifier of the icon in the status area. Data Type: Long. Value: Any value within the limits of the Long data type. The sample program uses vbNull. uFlags: Array of flags that indicate which of the other members contain valid data. Data Type: Long. Value: Any combination of the following constants to indicate that the member of this structure is valid and will be used: NIF_ICON: Passing this flag indicates that the value for the hIcon will be the icon that appears in the taskbar status area. NIF_MESSAGE: Passing this flag indicates that the uCallBackMessage value will be used as the callback message. NIF_TIP: Passing this flag indicates that the value of szTip will be used as the ToolTip for the icon in the taskbar status area. uCallBackMessage: Identifier of the notification message sent to the window that is used to receive the messages. Data Type: Long. Value: The message used to identify that a mouse event has occurred within the rectangular boundaries of the icon in the taskbar status area. hIcon: Handle of the icon that is displayed in the taskbar status area. Data Type: Long. Value: The image that will be used as an icon in the taskbar status area. This can be the icon property of a control, an image from an image control, or any icon image. szTip: String to be used as the ToolTip text. Data Type: Fixed-length string 64 bytes long. Value: Any null-terminated string under 64 bytes.
The next section explains how to use this function in a sample program to manipulate icons in the taskbar status area.
The Sample ProgramThe sample program consists of a form containing two command buttons and the common dialog box control. When you click Add Icon, you set the values of the NOTIFYICONDATA data type. In this data type, you set the following values:
cbSize: The length of the variable that uses the Len function. hWnd: The handle of the window used to receive the callback messages. In the sample program, the form is used as the window to receive the messages. uId: The icon identifier. Although you can use any number, the sample program uses the vbNull constants. uFlags: Array flags indicate what members of this structure are valid. The sample program uses all the flags for maximum versatility. uCallBackMessage: The message that is sent when mouse activity occurs on the icon in the taskbar status tray. The mouse message that is sent maps to a mouse event in the control specified in the hWnd value. You should use a mouse message that can handle the messages exclusively. For example, the sample program uses the WM_MOUSEMOVE message because this message maps to the MouseMove event of the form. Rarely used in its intended form, the MouseMove event is a suitable event for this purpose. hIcon: The icon that is to be displayed in the taskbar status area. The sample program uses the form icon. szTip: The ToolTip string. The string must be terminated with a null character so the vbNullChar constant is concatenated to the string.
After setting the data, you then call the Shell_NotifyIcon function and pass the NOTIFYICONDATA along with a message to add the icon to the taskbar status area.
When you pass the mouse pointer over the icon in the taskbar status area, the form receives the message WM_MOUSEMOVE. This message maps to the form's MouseMove event. The X argument is the product of one of the mouse constants that indicates the mouse input (such as a left-click, right-click, single-click, or double-click) and the TwipsPerPixelX property of the screen. The mouse input is produced by dividing the X argument with this property. The mouse input is then used in a Select Case statement to execute a series of instructions.
For example, when you double-click the icon, the common dialog box appears and allows you to select a different icon. The hIcon value of the NOTIFYICONDATA data type is changed to the new icon. The Shell_NotifyIcon function is called with the new data type and a message to modify the icon in the taskbar status area.
If you right-click the icon, you execute the InputBox function that changes the ToolTip text. The new string is null terminated with the vbNullChar constant and the szTip value is changed to the new string. The Shell_NotifyIcon function is called with the new NOTIFYICONDATA data and a message to modify the icon.
When you click Delete Icon or exit the application, the Shell_NotifyIcon function is called with a message to delete the icon.
Steps To Create Sample Program
"Hardcore Visual Basic," Bruce McKinney, Microsoft Press, 1995 Microsoft Win32 SDK, Shell_NotifyIcon and NOTIFYICONDATA "Microsoft Systems Journal," February 1996, "The Visual Programmer," page 93, Joshua Trupin "Visual Basic Programmer's Journal," March 1996, "Q & A," page 136, Carl Franklin
Article ID: 162613 - Last Review: July 15, 2004 - Revision: 3.2