我为程序设计了一个托盘,程序关闭后托盘图标并不消失,要把鼠标移到托盘图标上一下后,图标才消失,为什么?
代码如下:
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CFrameWnd::OnCreate(lpCreateStruct) == -1)
return -1;

if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP
| CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||
!m_wndToolBar.LoadToolBar(IDR_MAINFRAME)) {
TRACE0("Failed to create toolbar\n");
return -1;      // fail to create
} //系统托盘
NOTIFYICONDATA NofityData;
NofityData.cbSize=sizeof(NOTIFYICONDATA);
NofityData.hWnd=this->m_hWnd;
NofityData.uID=IDR_MAINFRAME;
NofityData.uFlags=NIF_MESSAGE|NIF_ICON|NIF_TIP;
NofityData.uCallbackMessage=WM_MY_TRAY_NOTIFICATION;
HICON hIcon;
hIcon=AfxGetApp()->LoadIcon(IDR_MAINFRAME);
NofityData.hIcon=hIcon;
lstrcpyn(NofityData.szTip,"我的托盘",sizeof(NofityData.szTip));
::Shell_NotifyIcon(NIM_ADD,&NofityData);
if(hIcon)
DestroyIcon(hIcon); if (!m_wndStatusBar.Create(this) ||
!m_wndStatusBar.SetIndicators(indicators,
  sizeof(indicators)/sizeof(UINT)))
{
TRACE0("Failed to create status bar\n");
return -1;      // fail to create
}

m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);
EnableDocking(CBRS_ALIGN_ANY);
DockControlBar(&m_wndToolBar); return 0;
}
//系统托盘
LRESULT CMainFrame::OnTrayNotification(WPARAM wParam,LPARAM lParam)
{
if ((wParam == IDR_MAINFRAME)&&(lParam == WM_LBUTTONDOWN))
ShowWindow(SW_SHOWNORMAL);
return 0;
}
void CMainFrame::OnSysCommand(UINT nID, LPARAM lParam)
{
// 屏蔽最大化(MFC Bug),将最小化重定向至隐藏窗口
if (nID == SC_MAXIMIZE)
return;
if (nID == SC_MINIMIZE)
ShowWindow(SW_HIDE);
else
CWnd::OnSysCommand(nID, lParam);
}