添加OnTrayNotification()方法,然后加入响应代码就是了:LRESULT CSystemTray::OnTrayNotification(UINT wParam, LONG lParam) 
{
    //Return quickly if its not for this tray icon
    if (wParam != m_tnd.uID)
        return 0L;    CMenu menu, *pSubMenu;
    CWnd* pTarget = AfxGetMainWnd();    // Clicking with right button brings up a context menu
    if (LOWORD(lParam) == WM_RBUTTONUP)//右键放开
    {    
        if (!menu.LoadMenu(m_tnd.uID)) return 0;
        if (!(pSubMenu = menu.GetSubMenu(0))) return 0;        // Make chosen menu item the default (bold font)
        ::SetMenuDefaultItem(pSubMenu->m_hMenu,   m_DefaultMenuItemID, m_DefaultMenuItemByPos);        // Display and track the popup menu
        CPoint pos;
        GetCursorPos(&pos);        pTarget->SetForegroundWindow();  
        ::TrackPopupMenu(pSubMenu->m_hMenu, 0, pos.x, pos.y, 0, 
                         pTarget->GetSafeHwnd(), NULL);        // BUGFIX: See "PRB: Menus for Notification Icons Don't Work Correctly"
        pTarget->PostMessage(WM_NULL, 0, 0);        menu.DestroyMenu();
    } 
    else if (LOWORD(lParam) == WM_LBUTTONDBLCLK) //左键双击
    {
        // double click received, the default action is to execute default menu item
        pTarget->SetForegroundWindow();          UINT uItem;
        if (m_DefaultMenuItemByPos)
        {
            if (!menu.LoadMenu(m_tnd.uID)) return 0;
            if (!(pSubMenu = menu.GetSubMenu(0))) return 0;
            uItem = pSubMenu->GetMenuItemID(m_DefaultMenuItemID);
        }
        else
            uItem = m_DefaultMenuItemID;
        
        pTarget->SendMessage(WM_COMMAND, uItem, 0);        menu.DestroyMenu();
    }    return 1;
}希望对你有帮助

解决方案 »

  1.   

    对不起,可能是系统问题(我的是繁体的WIN200),所以再说一次:添加OnTrayNotification()方法,然后加入响应代码就是了 
     
    LRESULT  CSystemTray::OnTrayNotification(UINT  wParam,  LONG  lParam)
    {       
       if  (wParam  !=  m_tnd.uID) 
            return  0L; 
     
       CMenu  menu,  *pSubMenu;   //建立菜单对象
       CWnd*  pTarget  =  AfxGetMainWnd();    if  (LOWORD(lParam)  ==  WM_RBUTTONCLK)//如果右键单击显示菜单
       {         
            if  (!menu.LoadMenu(m_tnd.uID))  return  0; 
            if  (!(pSubMenu  =  menu.GetSubMenu(0)))  return  0; 
            ::SetMenuDefaultItem(pSubMenu->m_hMenu,   m_DefaultMenuItemID,  m_DefaultMenuItemByPos);           CPoint  pos; 
              GetCursorPos(&pos); 
              pTarget->SetForegroundWindow();     
              ::TrackPopupMenu(pSubMenu->m_hMenu,  0,  pos.x,  pos.y,  0, pTarget->GetSafeHwnd(),  NULL); 
              pTarget->PostMessage(WM_NULL,  0,  0); 
             menu.DestroyMenu(); 
         }     return  1; 
    }  
    你可以先在资源编辑器里做一个菜单,也可以动态生成菜单.希望对你有帮助