北方站长站
客服热线:0632-5117766

系统托盘气泡提示和右键菜单的实现

[2005-08-01 00:00:00] 作者:Northz.com 来源:北方站长站

Tags:菜单 实现 提示 系统 m_data return BOOL UINT // CShellIcon

  

//ContextMenu.hXwL北方站长站
#pragma onceXwL北方站长站
template XwL北方站长站
class CContextMenuXwL北方站长站
{XwL北方站长站
public:XwL北方站长站
BOOL CreateContextMenu(UINT ID_Menu)XwL北方站长站
{XwL北方站长站
T* pT = static_cast(this);XwL北方站长站
CMenu menu;XwL北方站长站
menu.LoadMenu(ID_Menu);XwL北方站长站
CMenu SubMenu(menu.GetSubMenu(0));XwL北方站长站
POINT pos;XwL北方站长站
GetCursorPos(&pos);XwL北方站长站
SubMenu.TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON, pos.x, pos.y, pT->m_hWnd);XwL北方站长站
return TRUE;XwL北方站长站
}XwL北方站长站
};XwL北方站长站
//ShellIcon.hXwL北方站长站
#pragma onceXwL北方站长站
#define WM_ICON WM_USER + 180XwL北方站长站
template XwL北方站长站
class CShellIcon : public MenuTXwL北方站长站
{XwL北方站长站
private:XwL北方站长站
NOTIFYICONDATA m_data;XwL北方站长站
UINT m_msgTaskbarRestart;XwL北方站长站
CString m_appName;XwL北方站长站
public:XwL北方站长站
CShellIcon()XwL北方站长站
{XwL北方站长站
m_appName.LoadString(IDS_APPNAME);XwL北方站长站
m_msgTaskbarRestart = RegisterWindowMessage(TEXT("TaskbarCreated"));XwL北方站长站
}XwL北方站长站
~CShellIcon()XwL北方站长站
{XwL北方站长站
Shell_NotifyIcon(NIM_DELETE, &m_data);XwL北方站长站
}XwL北方站长站
BOOL CreateShellIcon()XwL北方站长站
{XwL北方站长站
T* pT = static_cast(this);XwL北方站长站
SecureZeroMemory(&m_data, sizeof(m_data));XwL北方站长站
m_data.cbSize = sizeof(m_data);XwL北方站长站
m_data.hIcon = LoadIcon(_Module.get_m_hInst(), MAKEINTRESOURCE(IDR_MAINFRAME));XwL北方站长站
m_data.hWnd = pT->m_hWnd;XwL北方站长站
m_data.uID = IDR_MAINFRAME;XwL北方站长站
m_data.uFlags = NIF_ICON | NIF_MESSAGE | NIF_INFO | NIF_TIP;XwL北方站长站
m_data.uCallbackMessage = WM_ICON;XwL北方站长站
m_data.dwInfoFlags = NIIF_USER;XwL北方站长站
strcpy_s(m_data.szInfoTitle, m_appName);XwL北方站长站
strcpy_s(m_data.szTip, m_appName);XwL北方站长站
return Shell_NotifyIcon(NIM_ADD, &m_data);XwL北方站长站
}XwL北方站长站
void ModifyToolTips(LPCTSTR info)XwL北方站长站
{XwL北方站长站
strcpy_s(m_data.szInfo, info);XwL北方站长站
}XwL北方站长站
BOOL DispalyToolTips()XwL北方站长站
{XwL北方站长站
return Shell_NotifyIcon(NIM_MODIFY, &m_data);XwL北方站长站
}XwL北方站长站
BOOL BalloonToolTips(LPCTSTR info)XwL北方站长站
{XwL北方站长站
ModifyToolTips(LPCTSTR info);XwL北方站长站
return DispalyToolTips();XwL北方站长站
}XwL北方站长站
BEGIN_MSG_MAP(CShellIcon)XwL北方站长站
MESSAGE_HANDLER(WM_ICON, OnIcon)XwL北方站长站
MESSAGE_HANDLER(m_msgTaskbarRestart, OnRestart)XwL北方站长站
MESSAGE_HANDLER(WM_SIZE, OnSize)XwL北方站长站
CHAIN_MSG_MAP(MenuT)XwL北方站长站
END_MSG_MAP()XwL北方站长站
LRESULT OnIcon(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)XwL北方站长站
{XwL北方站长站
T* pT = static_cast(this); char t;XwL北方站长站
if (wParam != IDR_MAINFRAME) return 1;XwL北方站长站
switch(lParam)XwL北方站长站
{XwL北方站长站
case WM_RBUTTONUP:XwL北方站长站
t = *m_data.szInfo;XwL北方站长站
*m_data.szInfo = '/0';XwL北方站长站
Shell_NotifyIcon(NIM_MODIFY, &m_data);XwL北方站长站
pT->CreateContextMenu(MenuID);XwL北方站长站
*m_data.szInfo = t;XwL北方站长站
break;XwL北方站长站
case WM_LBUTTONUP:XwL北方站长站
pT->ShowWindow(SW_SHOW);XwL北方站长站
OpenIcon(pT->m_hWnd);XwL北方站长站
break;XwL北方站长站
//去掉下面的注释可以使鼠标悬停在图标上时出现气泡提示,个人不太喜欢XwL北方站长站
case WM_MOUSEMOVE:XwL北方站长站
// DispalyToolTips(); break;XwL北方站长站
default:XwL北方站长站
;XwL北方站长站
}XwL北方站长站
return 0;XwL北方站长站
}XwL北方站长站
//处理Explorer外壳崩溃后任务栏重建,你会发现很多程序都没处理,结果就是Explorer一崩溃XwL北方站长站
//图标就找不到了,如果最小化到任务栏更惨,还得用任务管理器关闭,这个函数我没机会测试,希望有作用XwL北方站长站
LRESULT OnRestart(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)XwL北方站长站
{XwL北方站长站
T* pT = static_cast(this);XwL北方站长站
SecureZeroMemory(&m_data, sizeof(m_data));XwL北方站长站
m_data.cbSize = sizeof(m_data);XwL北方站长站
m_data.hWnd = pT->m_hWnd;XwL北方站长站
m_data.uID = IDR_MAINFRAME;XwL北方站长站
Shell_NotifyIcon(NIM_DELETE, &m_data);XwL北方站长站
CreateShellIcon();XwL北方站长站
return 0;XwL北方站长站
}XwL北方站长站
//最小化到系统托盘XwL北方站长站
LRESULT OnSize(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/)XwL北方站长站
{XwL北方站长站
T* pT = static_cast(this);XwL北方站长站
if (pT->IsIconic()) pT->ShowWindow(SW_HIDE);XwL北方站长站
return 0;XwL北方站长站
}XwL北方站长站
};XwL北方站长站
//MyIconMenu.hXwL北方站长站
#pragma onceXwL北方站长站
#include "stdafx.h"XwL北方站长站
#include XwL北方站长站
template XwL北方站长站
class CMyIconMenu : public CContextMenuXwL北方站长站
{XwL北方站长站
public:XwL北方站长站
BEGIN_MSG_MAP(CContextMenu)XwL北方站长站
COMMAND_ID_HANDLER(ID_RESUME, OnResume)XwL北方站长站
COMMAND_ID_HANDLER(ID_QUIT, OnQuit)XwL北方站长站
END_MSG_MAP()XwL北方站长站
LRESULT OnResume(WORD /*wNotifyCode*/, WORD wID, HWND /*hWndCtl*/, BOOL& /*bHandled*/)XwL北方站长站
{XwL北方站长站
T* pT = static_cast(this);XwL北方站长站
pT->ShowWindow(SW_SHOW);XwL北方站长站
OpenIcon(pT->m_hWnd);XwL北方站长站
return 0;XwL北方站长站
}XwL北方站长站
LRESULT OnQuit(WORD /*wNotifyCode*/, WORD wID, HWND /*hWndCtl*/, BOOL& /*bHandled*/)XwL北方站长站
{XwL北方站长站
PostQuitMessage(0);XwL北方站长站
return 0;XwL北方站长站
}XwL北方站长站
};
XwL北方站长站

 

News

 

info

 

down

出售手机裁听器,手机跟踪定位系统    企业网站,网城,购物网,都市导购,校园网    网上书店系统    上海电信机房服务器托管,双线主机托管    美女图片馆    15G 高清晰图片资源 无水印    室内装潢材料新产品杰威尔艺术漆    收一万ip的美女图片    大量收购个人网址导航网站    出售网址站PR=4alexa=119,764    

1 2 下一页

下一篇链接:Struts开发指南之MVC架构

上一篇链接:Web框架比较:Struts、Spring MVC、WebWork、Tapestry和JSF(by Matt Raible)

评论】 【打印】 【加入收藏】 【关闭→论坛 →博客 →数据中心

 共有 0 位网友发表了评论 此处只显示部分留言 点击查看完整评论页面