最简单的:
#define WM_NC WM_USER+10
#define IDC_NC 1002
在BOOL CMyDlg::OnInitDialog()
{
....
CreateNotifyIcon();
}
void CMyDlg::CreateNotifyIcon()
{
NOTIFYICONDATA nc;
nc.cbSize = sizeof(NOTIFYICONDATA);
nc.hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME); //这里使用默认的图标
nc.hWnd = m_hWnd;
strcpy(nc.szTip,"CatchIP");
nc.uCallbackMessage = WM_NC;
nc.uFlags = NIF_ICON|NIF_MESSAGE|NIF_TIP;
nc.uID = IDC_NC;
Shell_NotifyIcon(NIM_ADD,&nc);
ShowWindow(SW_HIDE); //隐藏窗口
}
在关闭窗口时删除托盘图标:
void CMyDlg::OnClose()
{
// TODO: Add your message handler code here and/or call default
//删除系统区图标
NOTIFYICONDATA nc;
nc.cbSize = sizeof(NOTIFYICONDATA);
nc.hIcon=AfxGetApp()->LoadIcon(IDR_MAINFRAME);
nc.hWnd=m_hWnd;
nc.uCallbackMessage = WM_NC;
nc.uFlags = NIF_ICON|NIF_MESSAGE|NIF_TIP;
nc.uID = IDC_NC;
Shell_NotifyIcon(NIM_DELETE,&nc);
CDialog::OnClose();
}
---------------------------------------------------------------------------------------------------------------------------------
若要在左击或右击托盘图标加入响应:
就要对nc.uCallbackMessage = WM_NC; 这个消息进行响应了
BEGIN_MESSAGE_MAP(Mp3play, CDialog)
ON_MESSAGE(WM_NC,OnNotifyIcon) //加入消息响应语句
END_MESSAGE_MAP()
//消息响应函数
void Mp3play::OnNotifyIcon(WPARAM wParam,LPARAM lParam)
{
if(lParam==WM_LBUTTONDOWN) || (lParam==WM_LBUTTONDBLCLK) //左击则显示窗口
{
ShowWindow(SW_SHOW);
}
else if(lParam==WM_RBUTTONDOWN) //右击则显示弹出菜单
{
................
}
}