MFC系统化托盘(转)
来源:互联网 发布:黑帽seo技术培训 编辑:程序博客网 时间:2024/05/22 03:10
在VC中实现系统托盘图标主要用到一个Shell_NotifyIcon系统API。在本文中我们以对话框程序为例子实现系统托盘图标,步骤如下:
1. 在StdAfx.h中定义消息ID,如:
#define MYWM_NOTIFYICON WM_USER+1
2. 定义一个全局NOTIFYICONDATA变量,如:
NOTIFYICONDATA g_nd;
3. 实现添加系统托盘图标函数,如:
void CZTXClientDlg::AddSystrayIcon()
{
// 将图标放入系统托盘
g_nd.cbSize = sizeof (NOTIFYICONDATA);
g_nd.hWnd = m_hWnd;
g_nd.uID = IDR_MAINFRAME;
g_nd.uFlags = NIF_ICON|NIF_MESSAGE|NIF_TIP;
g_nd.uCallbackMessage= MYWM_NOTIFYICON;
g_nd.hIcon = m_hIcon;
strcpy(g_nd.szTip, "知天下娱乐中心[V1.1]");
Shell_NotifyIcon(NIM_ADD, &g_nd);
}
4. 实现删除系统托盘图标函数,如:
void CZTXClientDlg::DelSystrayIcon()
{
Shell_NotifyIcon(NIM_DELETE, &g_nd);
}
5. 重载WindowProc函数,如:
LRESULT CZTXClientDlg::WindowProc(UINT message, WPARAM wParam, LPARAM lParam)
{
// TODO: Add your specialized code here and/or call the base class
switch( message )
{
case MYWM_NOTIFYICON:
if(lParam==WM_LBUTTONDBLCLK)
{
AfxGetApp()->m_pMainWnd->ShowWindow(SW_SHOW);
}else if(lParam==WM_RBUTTONDOWN)
{
CMenu menu;
//载入事先定义的选单
menu.LoadMenu(IDR_TRADEMEMU);
CMenu*pMenu=menu.GetSubMenu(0);
CPoint pos;
GetCursorPos(&pos);
//加入SetForegroundWindow的目的为使用户点菜单之外时菜单可以消失
::SetForegroundWindow(m_hWnd);
pMenu->TrackPopupMenu(TPM_LEFTALIGN|TPM_RIGHTBUTTON,pos.x,pos.y,AfxGetMainWnd());
}
break;
}
return CDialog::WindowProc(message, wParam, lParam);
}
6. OK,现在在我们的OnInitDialog函数中加入如下代码:
AddSystrayIcon( );
7. 在窗口关闭函数中加入如下代码:
DelSystrayIcon( );
- MFC系统化托盘(转)
- MFC托盘
- MFC添加托盘全过程
- MFC托盘处理
- mfc 托盘弹出气泡
- MFC托盘气泡
- MFC托盘图标
- MFC最小化到托盘
- MFC托盘图标编程
- MFC最小化到托盘
- MFC之托盘
- VC之托盘 MFC
- MFC托盘显示
- MFC托盘编程
- MFC托盘实例
- mfc 对话框 启动托盘
- MFC 托盘设计
- MFC 托盘模式
- Spring中使用配置多个tx:annotation-driven
- 魔數師G
- FCKeditor 使用指南及 JavaScript 调用
- float类型在内存中的表示
- 股票操作记录 2011.1.6
- MFC系统化托盘(转)
- NoSQL数据库探讨之一 - 为什么要用非关系数据库?
- windows 无法格式化U盘为 NTFS 可以在 ubuntu 完成
- Python学习 (一)
- Android Camera架构浅析
- MFC串口通信的两种方法及注意事项
- sqlserver导出数据的insert语句
- VC6下安装于配置OpenCV1.0
- Named Serch Spec