首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

气泡响应鼠标单击事件解决方法

2012-03-19 
气泡响应鼠标单击事件我用Shell_NotifyIcon函数弹出了一个气泡,现在需要点击这个气泡来弹出一个网页,请大

气泡响应鼠标单击事件
我用Shell_NotifyIcon函数弹出了一个气泡,现在需要点击这个气泡来弹出一个网页,请大侠指教气泡怎么响应鼠标单击消息呢?谢谢

[解决办法]
#define UM_NOTIFY 888 //可随便取一个用户消息id值 

 //产生icon 
NOTIFYICONDATA NotifyIconData; 

NotifyIconData-> cbSize = sizeof(NOTIFYICONDATA); 
 NotifyIconData-> hWnd = hWnd; 
 NotifyIconData-> uID = 1; 
 NotifyIconData-> uFlags = NIF_ICON | NIF_MESSAGE | NIF_TIP; 

//点击icon时对应的消息id 
 NotifyIconData-> uCallbackMessage = UM_NOTIFY; 

 NotifyIconData-> hIcon = LoadIcon(hInst,(LPCTSTR)IDI_HIDEWINDOW); 
 sprintf(pNotifyIconData-> szTip, "HideWindow ^_^ "); 
 NotifyIconData-> uVersion = NOTIFYICON_VERSION; 

 Shell_NotifyIcon(NIM_ADD,pNotifyIconData); 
 Shell_NotifyIcon(NIM_SETVERSION,pNotifyIconData); 

 //处理UM_NOTIFY消息 
case UM_NOTIFY: 
 switch(lParam) 
 { 
 case WM_CONTEXTMENU: //右键单击 
 DisplayContextMenu(hWnd); 
 break; 
 } 

 //显示菜单 
 VOID DisplayContextMenu(HWND hwnd)
 {
HMENU hmenu; // top-level menu
HMENU hmenuTrackPopup; // shortcut menu
 POINT pt; 
 int nMouse[3]={0}; 

 //pt.x=100; pt.y=100; 
 GetCursorPos(&pt); 

if ((hmenu = LoadMenu(hInst, (LPCTSTR)IDC_HIDEWINDOW)) == NULL) 
return;
 
hmenuTrackPopup = GetSubMenu(hmenu, 0);
 
SetForegroundWindow(hwnd); 
 
TrackPopupMenu(hmenuTrackPopup,
TPM_LEFTALIGN | TPM_RIGHTBUTTON,
pt.x, pt.y, 0, hwnd, NULL);

 PostMessage(hwnd,WM_NULL,0,0); 
 
DestroyMenu(hmenu);
 }

LZ参考:
http://www.codeproject.com/Articles/74/Adding-Icons-to-the-System-Tray
http://topic.csdn.net/t/20030106/16/1331897.html

热点排行