Message Bar items are messages with a navigation tree item link that, when clicked, navigates the user to that location in the WMC.

Adding Message Bar items

Add a message bar item with NavInsertItem.

void AddMessageBarItem(LPCWSTR text, LPCWSTR link)
{
	// First get the root of the MESSAGEBAR domain
	NAVSETITEM messageBarRootData;
	memset(&messageBarRootData, 0, sizeof(NAVSETITEM));
	if( !NavGetItem(_T("MESSAGEBAR"), &messageBarRootData) )
	{
		return;														// Failed to find MESSAGEBAR root
	}
	NavHandle messageBarRoot = messageBarRootData.hItem;
 
	// Now add a simple message bar item
	NAVSETITEM newItem;
	memset(&newItem, 0, sizeof(newItem));
	newItem.flags = NI_FLAG_MESSAGEBAR_ICONWARNING;						// The icon we want to show. NI_FLAG_MESSAGEBAR_ICONINFO, NI_FLAG_MESSAGEBAR_ICONWARNING and NI_FLAG_MESSAGEBAR_ICONSHIELD
	newItem.EventMask = NI_EVENT_MOUSE_LCLICK;							// Need click events to navigate somewhere when the link is clicked
	newItem.strLabel = L"This is a message bar message";
	newItem.strDescription = L"NAVIGATIONTREE\\ControlPanel\\Events";	// Override description field as the FQN or alias to navigate to when the link is clicked
	newItem.lParam = 0;													// Custom context data
	newItem.pInterface = &notificationInterface;						// Interface to handle messages from the message bar
	NavInsertItem(hMessageBar, _T("MyComponentWarningEvents"), &newItem);
}

Items added in the manner shown above display the strLabel text, followed by a link that says "Go There". If you click the link, the WMC navigates to the location specified in strDescription.

 

FlagDescription
NI_FLAG_MESSAGEBAR_ICONWARNING
NI_FLAG_MESSAGEBAR_ICONINFO
NI_FLAG_MESSAGEBAR_ICONSHIELD
The type of icon to show. Mutually exclusive.
NI_FLAG_MESSAGEBAR_NOTIFYNotify the item of the click. Without this flag the default behaviour is to go to a navigation location. Calls the NavItemNotify handler of the notification interface supplied in NavInsertItem
NI_FLAG_MESSAGEBAR_USERXAMLYou wish to supply the full XAML for the item. See below for details.

 

NI_FLAG_MESSAGEBAR_NOTIFY means call NavNotifyItem, else calls NavGotoItem. If NI_FLAG_MESSAGEBAR_NOTIFY then we notify the tag, otherwise we goto the description

 

NI_FLAG_MESSAGEBAR_USERXAML