VC小技巧(2)-----托盘区图标操作

王朝vc·作者佚名  2007-05-09
窄屏简体版  字體: |||超大  

经常能够看到软件运行后在托盘产生图标 ,其实也就是对结构 NOTIFYICONDATA 的设置

再调用Shell_NotifyIcon就能完成

NOTIFYICONDATA notifycd;

notifycd.cbSize=sizeof(NOTIFYICONDATA);

notifycd.hIcon=AfxGetApp()->LoadIcon(IDR_MAINFRAME);//图标资源

notifycd.hWnd=m_hWnd;

notifycd.uID=IDR_MAINFRAME;

notifycd.uFlags=NIF_MESSAGE|NIF_ICON|NIF_TIP;

lstrcpy( notifycd.szTip, _T( "" ) ); //默认的tooltip上的文字

notifycd.uCallbackMessage = WM_SHELLNOTIFY; //一旦在任务栏上产生图标,就回触发一定的消息

Shell_NotifyIcon(NIM_ADD,&notifycd);

任务栏图标上的消息处理映射

ON_MESSAGE( WM_SHELLNOTIFY, OnShellNotify)

显示,删除,修改函数详细操作

//在托盘区显示图标

BOOL AddNotifyIcon(UINT Icon,LPCTSTR sztip, UINT ID)

{

HICON hIcon;

hIcon=AfxGetApp()->LoadIcon(Icon);

NOTIFYICONDATA idata;

idata.cbSize=sizeof(NOTIFYICONDATA);

idata.hIcon=hIcon;

CWnd *pWnd=AfxGetMainWnd();

idata.hWnd=GetSafeHwnd();

strcpy(idata.szTip,sztip);

idata.uCallbackMessage=WM_SHELLNOTIFY;

idata.uFlags=NIF_MESSAGE|NIF_ICON|NIF_TIP;

idata.uID=ID;

return Shell_NotifyIcon(NIM_ADD,&idata);

}

//在托盘区删除图标

BOOL DeleteNotifyIcon(UINT Icon,LPCTSTR sztip, UINT ID)

{

HICON hIcon;

hIcon=AfxGetApp()->LoadIcon(Icon);

NOTIFYICONDATA idata;

idata.cbSize=sizeof(NOTIFYICONDATA);

idata.hIcon=hIcon;

CWnd *pWnd=AfxGetMainWnd();

idata.hWnd=GetSafeHwnd();

strcpy(idata.szTip,sztip);

idata.uCallbackMessage=WM_SHELLNOTIFY;

idata.uFlags=NIF_MESSAGE|NIF_ICON|NIF_TIP;

idata.uID=ID;

return Shell_NotifyIcon(NIM_DELETE,&idata);

}

//在托盘区修改图标

BOOL ModifyNotifyIcon(UINT Icon,LPCTSTR sztip, UINT ID)

{

HICON hIcon;

hIcon=AfxGetApp()->LoadIcon(Icon);

NOTIFYICONDATA idata;

idata.cbSize=sizeof(NOTIFYICONDATA);

idata.hIcon=hIcon;

CWnd *pWnd=AfxGetMainWnd();

idata.hWnd=GetSafeHwnd();

strcpy(idata.szTip,sztip);

idata.uCallbackMessage=WM_SHELLNOTIFY;

idata.uFlags=NIF_MESSAGE|NIF_ICON|NIF_TIP;

idata.uID=ID;

return Shell_NotifyIcon(NIM_MODIFY,&idata);

}

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有  導航