写个成员变量
NOTIFYICONDATA m_nid;//for icon on the tray
在对话框的OnInitDialog里:
m_nid.cbSize=(DWORD)sizeof(NOTIFYICONDATA);
m_nid.hWnd=this->m_hWnd;
m_nid.uID=IDR_MAINFRAME;
m_nid.uFlags=NIF_ICON|NIF_MESSAGE|NIF_TIP;
m_nid.uCallbackMessage=WM_NOTIFYICON;//self defined message
m_nid.hIcon=LoadIcon(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDR_MAINFRAME));//load icon
CTime time=CTime::GetCurrentTime();
CString csTmp=time.Format("%Y.%B.%d-%A");
strcpy(m_nid.szTip,csTmp);//balloon tip
Shell_NotifyIcon(NIM_ADD,&m_nid);//add icon on system tray
WM_NOTIFYICON是自定义消息,
ON_MESSAGE(WM_NOTIFYICON,OnClickIcon)
当鼠标点系统托盘图标时进它的消息相应函数:
LRESULT xxxxDlg::OnClickIcon(WPARAM wParam,LPARAM lParam)
{//respond mouse message on the tray icon
if(wParam!=IDR_MAINFRAME)return 1;
switch(lParam){
case WM_RBUTTONUP:{}
break;
case WM_LBUTTONUP:{}
}
return S_OK;
}
不同的鼠标事件加不同的处理。