Labwindows Windows 程序在系统托盘添加图标的方法

给一个程序添加系统托盘图标主要通过以下步骤:

如图1所示,通过函数InstallSysTrayIcon给程序添加系统托盘图标。

函数原型如下:

int InstallSysTrayIcon (const char iconImageFile[], const char toolTipText[], TrayIconCallback callbackFunction, int *iconHandle);

其中:

iconImageFile代表ICO图标路径;

ToolTipText代表你在系统托盘图标上停留鼠标时,显示的提示语;

callbackFunction参数表示给系统托盘装载的回调函数,你在系统托盘鼠标的任何动作以及系统托盘菜单事件均由此函数处理。

iconHandle表示系统托盘图标句柄,后续的所有操作都是以此句柄作为对象的。

系统托盘图标添加成功则返回0,否则为负数。

该函数如下所示:

int CVICALLBACK Func(int iconHandle,int event,int eventData);

能够相应的托盘事件包括:

EVENT_LEFT_CLICK
EVENT_LEFT_MOUSE_UP
EVENT_RIGHT_CLICK
EVENT_RIGHT_MOUSE_UP
EVENT_LEFT_DOUBLE_CLICK
EVENT_RIGHT_DOUBLE_CLICK
EVENT_MENU_ITEM

 EVENTDATA只在EVENT_MENU_ITEM下有用,表示点击菜单项的索引。

2.给系统托盘图标装载菜单

利用函数AttachTrayIconMenu 给系统托盘图标装载菜单

函数原型为int AttachTrayIconMenu (int iconHandle);

iconHandle表示系统托盘句柄。

装载成功,则返回0。

3.给菜单添加菜单项

利用函数InsertTrayIconMenuItem给菜单添加具体的菜单项。

函数原型为:

int InsertTrayIconMenuItem (int iconHandle, const char itemName[], int *itemIndex);

itemName表示菜单项名称,itemIndex表示新插入项的基于1的索引。

成功则返回0.

4.根据自己的需求给系统托盘回调函数添加代码。

5.其他函数

函数SetTrayIconMenuAttr和函数SetTrayIconMenuItemAttr分别可以设置菜单和菜单项的属性。具体请F1

6.装载的系统托盘图标和菜单在使用完后需要释放

int DetachTrayIconMenu (int iconHandle);

用于释放菜单。

int RemoveSysTrayIcon (int iconHandle);

用于移除系统托盘图标。

 

7.示例

int CVICALLBACK OkCB (int panel, int control, int event,
					  void *callbackData, int eventData1, int eventData2)
{
	switch (event)
	{
		case EVENT_COMMIT:
		   SetPanelAttribute(panel,ATTR_HAS_TASKBAR_BUTTON,0);
		   SetSystemAttribute(ATTR_TASKBAR_BUTTON_VISIBLE,0);
		   DetachTrayIconMenu(iconhandle);
		   RemoveSysTrayIcon(iconhandle);
		   InstallSysTrayIcon("2.ico","ʵÀý³ÌÐò",iconCB,&iconhandle);
		   AttachTrayIconMenu(iconhandle);
		   InsertTrayIconMenuItem(iconhandle,"ÏÔʾ",&itemindex);
		   InsertTrayIconMenuItem(iconhandle,NULL,&itemindex);    //添加分分割线
		   InsertTrayIconMenuItem(iconhandle,"´ýÏÔʾ״̬",&itemindex);
		   InsertTrayIconMenuItem(iconhandle,0,&itemindex);    //添加分分割线
		   InsertTrayIconMenuItem(iconhandle,"Í˳ö",&itemindex);
		   SetTrayIconMenuAttr(iconhandle,ATTR_POPUP_DEFAULT_ITEM,3);//加粗显示索引为3的图标
		   SetTrayIconMenuItemAttr(iconhandle,3,ATTR_CHECKED,1);//标记显示索引为3的图标
		   		   
		   break;
	}
	return 0;
}
int CVICALLBACK iconCB(int iconhandle,int event,int eventdata)
{
	int check;
	switch(event)
	{
		case EVENT_MENU_ITEM:
			if(eventdata==1)
			{
				//添加索引为1的菜单的处理代码
				
			}
			if(eventdata==3)
			{
				//添加索引为3的菜单的处理代码
			}
			if(eventdata==5)
			{
				//添加索引为5的菜单的处理代码
			}
	}
	return 0;	
}

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值