读书人

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

发布时间: 2012-03-19 22:03:05 作者: rapoo

气泡响应鼠标单击事件
我用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

读书人网 >C++

热点推荐