我做了系统托盘之后,就隐藏了我这个基于对话框的主界面,但是在托盘上点击右键之后,如果不点击菜单项,那么这个托盘菜单就不会消失了。
请大家帮我一下忙。而我在代码中加了::SetForegroundWindow((HWND)AfxGetApp()->m_pMainWnd);和::PostMessage((HWND)AfxGetApp()->m_pMainWnd, WM_NULL, 0, 0);这2个函数后,在托盘上点击右键则会报错。LRESULT ChttpDlg::WindowProc(UINT message, WPARAM wParam, LPARAM lParam)
{
// TODO: 在此添加专用代码和/或调用基类
switch(message)
{
case UM_NOTIFYICON:
if(lParam == WM_LBUTTONDBLCLK)
{
AfxGetApp()->m_pMainWnd->ShowWindow(SW_SHOW); 
}
else if(lParam == WM_RBUTTONDOWN)
{//下面是我跳出托盘菜单的代码
CMenu menu;
menu.LoadMenu(IDR_MENU_ADJUVANT);
menu.Detach();
CMenu* pMenu = menu.GetSubMenu(0);
CPoint pos;
GetCursorPos(&pos);
::SetForegroundWindow((HWND)AfxGetApp()->m_pMainWnd);   
pMenu->TrackPopupMenu(TPM_LEFTALIGN|TPM_RIGHTBUTTON, pos.x, pos.y, AfxGetMainWnd());
::PostMessage((HWND)AfxGetApp()->m_pMainWnd, WM_NULL, 0, 0);
}
break;
case WM_SYSCOMMAND:
if(wParam==SC_CLOSE)
{
AfxGetApp()->m_pMainWnd->ShowWindow(SW_HIDE);//接收到关闭消息时主窗口隐藏  
return 0;
}
break;
}
return CDialog::WindowProc(message, wParam, lParam);
}