托盘操作

实现程序运行后自动最小化到托盘,代码简单,仅供参考

主要是完成了点击托盘界面恢复,以及点击最小化之后,界面及任务栏图标消失,右键托盘后有对应菜单

#include "toolbox.h"
#include <cvirte.h>		
#include <userint.h>
#include "demo.h"

static int panelHandle;
static int iconHandle;

int iconCB(int iconHandle, int event, int eventData);
void minimizeToTray(int panel);
void resetFromTray(int panel);


int main (int argc, char *argv[])
{
	if (InitCVIRTE (0, argv, 0) == 0)
		return -1;	/* out of memory */
	if ((panelHandle = LoadPanel (0, "demo.uir", PANEL)) < 0)
		return -1;
	DisplayPanel (panelHandle);
	minimizeToTray(panelHandle);
	RunUserInterface ();
	DiscardPanel (panelHandle);
	DetachTrayIconMenu (iconHandle);
	RemoveSysTrayIcon (iconHandle);
	return 0;
}

int CVICALLBACK panelCB (int panel, int event, void *callbackData,
						 int eventData1, int eventData2)
{
	switch (event)
	{
		case EVENT_GOT_FOCUS:
			RemoveSysTrayIcon (iconHandle);
			DetachTrayIconMenu (iconHandle);
			break;
		case EVENT_CLOSE:
			QuitUserInterface (0);
			break;
		case EVENT_PANEL_MINIMIZE:
			minimizeToTray(panel);
			break;
	}
	return 0;
}

/*--------------------------------------------------------------------------*
* Description:			最小化该面板到托盘
*----------------------------------------------------------------------------*/ 
void minimizeToTray(int panel)
{
	int index;
	char file[500];
	
	SetPanelAttribute (panel, ATTR_HAS_TASKBAR_BUTTON, 0);
	SetSystemAttribute (ATTR_TASKBAR_BUTTON_VISIBLE, 0);
	
	GetProjectDir(file);
	strcat(file,"\\hand.ico");
	
	InstallSysTrayIcon (file, "测试程序\n仅供装逼", iconCB, &iconHandle);

	AttachTrayIconMenu (iconHandle);
	InsertTrayIconMenuItem (iconHandle, "退出", &index);
	InsertTrayIconMenuItem (iconHandle, 0, &index);
	InsertTrayIconMenuItem (iconHandle, "显示主窗口", &index);
	
	SetPanelAttribute (panel, ATTR_VISIBLE, 0);
}	

/*--------------------------------------------------------------------------*
* Description:			从托盘中恢复
*----------------------------------------------------------------------------*/ 
void resetFromTray(int panel)
{
	SetPanelAttribute (panel, ATTR_VISIBLE, 1);
	SetSystemAttribute (ATTR_TASKBAR_BUTTON_VISIBLE, 1);
	DisplayPanel (panel);
}	

/*--------------------------------------------------------------------------*
* Description:			托盘函数
*----------------------------------------------------------------------------*/ 
int iconCB(int iconHandle, int event, int eventData)
{
	switch(event)
	{
		case EVENT_MENU_ITEM:
			switch(eventData)
			{
				case 1://对应 退出 索引
					QuitUserInterface (0);
					break;
				case 3://对应 显示主窗口 索引
					resetFromTray(panelHandle);
					break;
			}
			break;
		case EVENT_LEFT_CLICK:
			resetFromTray(panelHandle);
			break;
	}
	return 0;
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值