您的位置:首页 > 其它

VC 程序显示托盘图标功能

2015-05-17 17:08 288 查看
1.在资源中添加图标项,通过导入源图像或重新绘制。新建图标文件时需先创建一个,然后再导入图片。改变系统默认的需导入图片,然后复制粘贴,去掉图片透明属性。

2.在程序初始化部分增加如下代码
<span style="white-space:pre">	</span>//图标句柄
HICON hIcon;
char lpszTip[] = _T("XXX");

HINSTANCE hInst = AfxFindResourceHandle(MAKEINTRESOURCE(IDI_TRAYICON),RT_GROUP_ICON);

hIcon = (HICON)LoadImage(hInst,MAKEINTRESOURCE(IDI_ICON1),IMAGE_ICON,16,16,LR_DEFAULTCOLOR);

//给NOTIFYICONDATA结构赋值
//NOTIFYICONDATA tnid;
<span style="white-space:pre">	</span>tnid.cbSize = sizeof(NOTIFYICONDATA);
<span style="white-space:pre">	</span>tnid.hWnd = m_hWnd;
<span style="white-space:pre">	</span>tnid.uID = IDI_ICON1;
<span style="white-space:pre">	</span>tnid.uFlags = NIF_MESSAGE | NIF_ICON | NIF_TIP;
<span style="white-space:pre">	</span>tnid.uCallbackMessage = WM_SHOWTASK; //自定义消息
<span style="white-space:pre">	</span>tnid.hIcon = hIcon;

if (lpszTip)
<span style="white-space:pre">	</span> <span style="white-space:pre">	</span>lstrcpyn(tnid.szTip, lpszTip, sizeof(tnid.szTip));
<span style="white-space:pre">	</span>else
<span style="white-space:pre">	</span>tnid.szTip[0] = '\0';

//调用Shell_NotifyIcon函数通过NIM_ADD向任务栏写图标
Shell_NotifyIcon(NIM_ADD, &tnid);
//释放图标资源
if (hIcon)
DestroyIcon(hIcon);
3.添加自定义消息

该消息为响应托盘图标鼠标事件添加。

#define WM_SHOWTASK WM_USER+103
afx_msg LRESULT onShowTask(WPARAM wParam,LPARAM lParam);
ON_MESSAGE(WM_SHOWTASK,onShowTask)
LRESULT Crfm2gcommDlg::onShowTask(WPARAM wParam,LPARAM lParam)
{
switch(lParam)
{
case WM_RBUTTONUP://右键起来时弹出快捷菜单,这里只有一个“关闭”
{  /*
LPPOINT lpoint=new tagPOINT;
::GetCursorPos(lpoint);//得到鼠标位置
CMenu menu;
menu.CreatePopupMenu();//声明一个弹出式菜单
//增加菜单项“关闭”,点击则发送消息WM_DESTROY给主窗口(已
//隐藏),将程序结束。
menu.AppendMenu(MF_STRING,WM_DESTROY,"关闭");
//确定弹出式菜单的位置
menu.TrackPopupMenu(TPM_LEFTALIGN,lpoint->x,lpoint->y,this);
//资源回收
HMENU hmenu=menu.Detach();
menu.DestroyMenu();
delete lpoint;
*/
}
break;
case WM_LBUTTONDBLCLK://双击左键的处理
{
this->ShowWindow(SW_SHOWNORMAL);//简单的显示主窗口
}
break;
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: