右键点击托盘中的图标,然后弹出菜单时出错:if(lParam == WM_RBUTTONDOWN) //检测到鼠标右键消息
{
  CMenu mnuTray;
  mnuTray.LoadMenu(IDR_MNUNTI);// --〉加载Popup菜单  CMenu* pMenu = mnuTray.GetSubMenu(0);  CPoint ptPos;
  GetCursorPos(&ptPos);   pMenu->TrackPopupMenu(TPM_RIGHTBUTTON, ptPos.x, ptPos.y, this); //出   错,原因是m_hMenu=NULL。
}我的程序是基于对话框的,大家知道为什么会错吗?

解决方案 »

  1.   

    你把 CMenu mnuTray 定义成类变量试试。
      

  2.   

    我是这么做的:if(lParam==WM_RBUTTONDOWN)
    {
    CMenu menu;
    menu.LoadMenu(IDR_MENU_ICON);
    CMenu* pPopMenu0=menu.GetSubMenu(0);
            CPoint pos;
          GetCursorPos(&pos);
    SetForegroundWindow();
    pPopMenu0->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON,pos.x,
    pos.y,this);
    }
    else
    {
    if(lParam==WM_LBUTTONDBLCLK)
    {
     CTranDlg::ShowWindow(SW_SHOWNORMAL);
     CTranDlg::ShowWindow(SW_SHOWNORMAL);
     SetForegroundWindow();
    }

    else
    {
          if(lParam==WM_LBUTTONDOWN)
      {
    CMenu menu;
    menu.LoadMenu(IDR_MENU_ICON);
    CMenu* pPopMenu2=menu.GetSubMenu(2);
            CPoint pos;
    GetCursorPos(&pos);
    SetForegroundWindow();
    pPopMenu2->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON,pos.x,pos.y,this);
      }
    }
    }
      

  3.   

    有能通过的例子吗?给我一个。[email protected]
      

  4.   

    m_hMenu在哪里呢?没看见你贴的代码里有m_hMenu。
      

  5.   

    To:whhome1981(垃圾):
    m_hMenu将会在::TrackPopupMenu(...)中用到,而CMenu::TrackPopupMenu(...)封装了::TrackPopupMenu(...)