分类: 嵌入式
2010-11-19 14:23:30
描述:
本文以实例代码的形式讲述了在VC中系统托盘图标的实现。
技术实现:
在VC中实现系统托盘图标主要用到一个Shell_NotifyIcon系统API。在本文中我们以对话框程序为例子实现系统托盘图标,步骤如下:
1. 在StdAfx.h中定义消息ID,如:
#define MYWM_NOTIFYICON WM_USER+1
2. 在dlg定义一个全局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]");
wcscpy(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);
}
break;
}
return CDialog::WindowProc(message, wParam, lParam);
}
6. OK,现在在我们的OnInitDialog函数中加入如下代码:
AddSystrayIcon( );
7. 在窗口关闭函数中加入如下代码:
DelSystrayIcon( );
wince 6.0测试通过了.