vc托盘图标的实现以及托盘右键菜单的响应
来源:互联网 发布:阿里云做socket服务器 编辑:程序博客网 时间:2024/05/01 08:52
#define UM_SHOW_TORY_ICON WM_USER + 200 + 1 // 用于响应托盘图标消息
void addToTray()
{HINSTANCE hInst = m_pm.GetInstance();
HICON hIcon;
hIcon = LoadIcon(hInst,MAKEINTRESOURCE(IDI_ICON));
NOTIFYICONDATAW nd;
nd.cbSize = sizeof (NOTIFYICONDATA);
nd.hWnd = m_hWnd;
nd.uID = IDI_ICON; //托盘图标的图标ID
nd.uFlags = NIF_ICON|NIF_MESSAGE|NIF_TIP;
nd.uCallbackMessage= UM_SHOW_TORY_ICON; //托盘图标响应的消息ID
nd.hIcon = hIcon;
wcscpy(nd.szTip,L"网吧魔方兑换中心"); //托盘图标鼠标悬浮提示文字
Shell_NotifyIcon(NIM_ADD, &nd);
}
void ModifyToryIcon()
{
HINSTANCE hInst = m_pm.GetInstance();
HICON hIcon;
hIcon = LoadIcon(hInst,MAKEINTRESOURCE(IDI_ICON));
NOTIFYICONDATAW nd;
nd.cbSize = sizeof (NOTIFYICONDATA);
nd.hWnd = m_hWnd;
nd.uID = IDI_ICON;
nd.uFlags = NIF_ICON|NIF_MESSAGE|NIF_TIP;
nd.uCallbackMessage= UM_SHOW_TORY_ICON;
nd.hIcon = hIcon;
wcscpy(nd.szTip, L"网吧魔方兑换中心");
// 全局函数Shell_NotifyIcon()用于在托盘上增加、删除或修改图标
// NIM_ADD 增加图标
// NIM_DELETE 删除图标
// NIM_MODIFY 修改图标
Shell_NotifyIcon(NIM_MODIFY, &nd);
}
void DelTray(HWND m_hWnd)
{
NOTIFYICONDATA nd;
nd.cbSize = sizeof (NOTIFYICONDATA);
nd.hWnd = m_hWnd;
nd.uID = IDI_ICON;
Shell_NotifyIcon(NIM_DELETE, &nd);
}
void showPopMenu()
{
CMenu menu;
BOOL issuc = menu.LoadMenu(MAKEINTRESOURCE(IDR_MENU1)); // IDR_MENU1使用的是系统菜单
if (issuc == FALSE)
{
return;
}
//载入事先定义的菜单
if ( m_is_start_run == FALSE) //此处用于更换菜单项勾选状态
{
menu.GetSubMenu(0).CheckMenuItem(ID_AUTOOPEN, MF_BYCOMMAND | MF_UNCHECKED);
}
else
{
menu.GetSubMenu(0).CheckMenuItem(ID_AUTOOPEN, MF_BYCOMMAND | MF_CHECKED);
}
POINT pos;
GetCursorPos(&pos);
SetForegroundWindow(m_hWnd); //失去焦点时菜单自动消失
menu.GetSubMenu(0).TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON, pos.x, pos.y, m_hWnd); //根据鼠标当前焦点位置设置弹出菜单位置
}
//托盘图标消息响应以及图标右键菜单项的响应
virtual HRESULT HandleMessage(UINT uMsg, WPARAM wParam, LPARAM lParam)
{
BOOL isHandle = FALSE;
switch(uMsg){
case WM_COMMAND:
{
if (wParam == ID_SHOWCONSALE)
{
ShowWindow(true);
}
if ( wParam == ID_AUTOOPEN )
{
if (m_is_start_run == FALSE)
{
//设置开机启动
}
else
{
//取消开机启动
}
}
if ( wParam == ID_QUIT )
{
DelTray(m_hWnd);
PostQuitMessage(0);
}
}
case UM_SHOW_TORY_ICON:
{
if(lParam == WM_LBUTTONDBLCLK)
{
//鼠标双击时主窗口出现
::ShowWindow(m_hWnd, SW_SHOWNORMAL);
}
else if(lParam==WM_RBUTTONUP && wParam == IDI_ICON)
{
//鼠标右键单击弹出菜单
showPopMenu();
}
break;
}
}
//业务消息
if (!isHandle)
return ui_dlg_helper::HandleMessage(uMsg, wParam, lParam);
return S_OK;
};
- vc托盘图标的实现以及托盘右键菜单的响应
- VC++任务栏托盘图标及右键菜单实现
- Qt实现系统托盘以及托盘的右键菜单
- MFC下托盘图标的实现和托盘菜单
- MFC下托盘图标的实现和托盘菜单
- VC 创建托盘,托盘tooltip。右键托盘菜单,点击别的地方会隐藏掉的问题。
- 托盘图标及右键菜单
- Flex AIR 系统托盘于右键托盘菜单的实现
- 17.VC(ui)-托盘图标和弹出菜单的实现(随手代码)
- MFC添加托盘图标并添加图标鼠标右键的响应
- 如何在托盘图标实现漂亮的菜单
- SWT 中实现最小化到托盘图标,并只能通过托盘的弹出菜单关闭程序
- SWT 中实现最小化到托盘图标,并只能通过托盘的弹出菜单关闭程序
- 托盘图标的添加和消息响应
- VC如何实现电脑任意一个托盘图标的隐藏
- 托盘图标及菜单的处理
- QT 创建托盘图标和右键菜单
- QT 创建托盘图标和右键菜单
- CSS制作图形速查表
- 汉字编码
- 二零一四年网站设计的八个流行趋势
- 小知识点:复选框和单选按钮水平排列
- python学习06
- vc托盘图标的实现以及托盘右键菜单的响应
- 计时器
- stat,fstat以及lstat函数
- 如何实现W5200E01-M3中的UPnP(通用即插即用) 端口转发(三)
- bzoj1014: [JSOI2008]火星人prefix
- 利用自定义View实现头像截取页面
- SQL SERVER数据库判断对象是否存在的方法汇总
- jquery 实现checkbox全选、取消全选功能
- dll和exe的共享节------多进程共享dll/exe全局变量