我要鼠标击键时(在任何状态下左,中,右键)在弹出菜单时在原先的菜单内加入我的菜单。

解决方案 »

  1.   

    在收到WM_LBUTTONDOWN, WM_MBUTTONDOWN,WM_RBUTTONDOWN消息时,使用如下代码:
    CMenu menu;
    if (menu.LoadMenu(ID_YOURMENU))
    {
    CMenu* pPopup = menu.GetSubMenu(0);
    ASSERT(pPopup != NULL);
    pPopup->TrackPopupMenu(TPM_RIGHTBUTTON | TPM_LEFTALIGN, point.x, point.y, this);
    }
    }
      

  2.   

    比如:void CYourWnd::PopupTheMenu(CPoint &point)
    {
    CMenu menu;
    if (menu.LoadMenu(ID_YOURMENU))
    {
    CMenu* pPopup = menu.GetSubMenu(0);
    ASSERT(pPopup != NULL);
    pPopup->TrackPopupMenu(TPM_RIGHTBUTTON | TPM_LEFTALIGN, point.x, point.y, this);
    }
    }
    }void CYourWnd::OnLButtonDown(UINT nFlags, CPoint point) 
    {
    PopupTheMenu(point);
    CBaseOfYourWnd::OnLButtonDown(nFlags, point);
    }......
      

  3.   

    上面的PopupTheMenu()多了一个"}",应该是:void CYourWnd::PopupTheMenu(CPoint &point)
    {
    CMenu menu;
    if (menu.LoadMenu(ID_YOURMENU))
    {
    CMenu* pPopup = menu.GetSubMenu(0);
    ASSERT(pPopup != NULL);
    pPopup->TrackPopupMenu(TPM_RIGHTBUTTON | TPM_LEFTALIGN, point.x, point.y, this);
    }
    }
      

  4.   

    提供一个建议:1、安装全局Hook WH_GETMESSAGE;2、检测信息WM_INITMENUPOPUP,然后插入你自己的菜单。
      

  5.   

    http://www.codeproject.com/shell/shellextguide1.asp
      

  6.   

    要做到任何程序中都加入,不是很现实吧,再说,又有什么意义呢?别人的应用程序又不会响应。一般,总是这种要求:在Explorer中右键菜单中加入自己的内容。此时,可以看看这个:
    http://www.codeproject.com/shell/shellextguide1.asp
    (a COM object that adds some kind of functionality to the Windows shell)