怎样能限制快捷菜单的显示条件(我想在LIST CONTROL中选定一项后才允许右键点出菜单,
但现在我加了一个快捷菜单后,在标题栏上右击都能点出快捷菜单来)。
快救救我这可怜的人吧!!!!!!!!!!!!
欢迎有原码!

解决方案 »

  1.   

    void CAdoDataListImpl::HandleOnContextMenu(CWnd* pWnd, CPoint ptMousePos)
    {
    // if Shift-F10/APPS
    if (ptMousePos.x == -1 && ptMousePos.y == -1)
    ptMousePos = (CPoint) GetMessagePos();
    GetCtrlPointer()->ScreenToClient(&ptMousePos);//CListCtrl* GetCtrlPointer() int iItem=GetCtrlPointer()->HitTest(ptMousePos);
    if(iItem!=-1)
    CGlobal::g_listSelectItem(*GetCtrlPointer(),iItem ,FALSE);//选定
    else
    ;//在这里return的话就可以不弹出来了,但是建议不要选定一项后才允许右键点出菜单……
    GetCtrlPointer()->ClientToScreen(&ptMousePos); CDataImpl::HandleOnContextMenu(pWnd, ptMousePos);//弹出菜单
    }
    void CAdoDataList::OnContextMenu(CWnd* pWnd, CPoint point) {m_pDataImpl->HandleOnContextMenu(pWnd, point);}
    BEGIN_MESSAGE_MAP(CAdoDataList, CListCtrl)
    //{{AFX_MSG_MAP(CAdoDataList)
    ON_WM_CONTEXTMENU()
    ……
      

  2.   

    怎样能象windows应用程序界面那样,只有在一个控件内点右键,才出来相应的快捷菜单。(我觉得楼上的建议很好,很感谢)但麻烦各位高手了。
    主要问题是我从哪个什么画廊(翻译过来的,不记得了)载入的POPUP MENU
    我在按钮和标题栏上右击都会出快捷菜单,怎样限制?我在MSDN中找不到取控件大小的函数。
      

  3.   

    这样可以:
    你定义一个变量:BOOL contextMenu = FALSE;
    然后在做个判断
    if(contextMenu ==TRUE)
    {
        //显示快捷菜单
      
    }
    这样不就行了?
      

  4.   

    好象没有在控件里加的。
    只有在对话框里加的。
    这选项是不是在ctrl+w中?
      

  5.   

    你检查一下point下面是什么窗口
    ChildWIndowFromPOint
      

  6.   

    你可以重载这个控件,然后再处理OnContextMenu即可