我的界面用了BCG的库,但是此库在右键点击时会有一个弹出菜单,我不想此菜单弹出。
我已经用 Spy++找到了右键消息,试着重写它:
BOOL CWorkSpaceBar::OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message)
{
// TODO: Add your message handler code here and/or call default //return CBCGPDockingControlBar::OnSetCursor(pWnd, nHitTest, message);
//AfxMessageBox(_T("3213"));
switch(message)
{
case WM_RBUTTONDOWN :
//AfxMessageBox(_T("3213"));
return 0;
default:
return 0; }
//return 0;
}
如果代码中加上AfxMessageBox(_T("3213"));则只会弹出对话框而不会弹出原来的菜单, 如果不加这句, 仍然会弹出菜单。
大虾们指点一下,我的应该怎么弄?如何才可以屏蔽这个消息?

解决方案 »

  1.   

    把AfxMessageBox换成PeekMessage,最后参数给PM_REMOVE。这样试试。
      

  2.   

    BCG的默认WorkSpaceBar是没有右键菜单的,可能你程序其他地方有处理吧
      

  3.   

    弹出菜单麻烦....模拟ESC键如何???呵呵在PreTranslateMessage中干掉WM_RBUTTONDOWN消息不知如何?.记得比较麻烦.
      

  4.   

    to cutewolf :    ---  return 1;  不起左右, 我试了的。to cnzdgs:----- 看了下MSDN,再结合程序, PeekMessage的参数不好设, (惭愧), 还有就是设立了最后一个参数 PM_REMOVE,是不是那个消息就就会从列表中删除了,不再发送出去to liuyan4794:------  BCG 有右键菜单的, 就是那个 “Docking”“HIde”……,  有印象了吧to smallfishff:---- 我的程序是在WorkSpaceBar上绑定一个 树控件,右键的时候弹出一个自己的菜单,如果模拟ESC, 自己的菜单也 GG了  :((谢谢 各位!)
      

  5.   

    定义一个MSG变量,其地址作为第1参数,其它参数都给0。目的就是把消息从队列中删除。
      

  6.   


    PreTranslateMessage中不能够屏掉右键菜单消息吗?变通方法可以在右击后再模拟左键单击 菜单即不会显示 可以试试.
      

  7.   

    PreTranslateMessage函数不是屏蔽消息用的,是来强制接受消息的,包括F5刷新键和鼠标的消息
    所以的消息都会先经过此函数,包括你的所指的消息,我没怎么看你的代码,要是想屏蔽消息的话就在PreTranslateMessage函数里用VK_**值加于你的消息的判断,想做的操作在这里更改即可
      

  8.   

    假设Dailog1是放置在BCG WorkSpaceBar面板上的对话框,在Dialog1的OnRButtonUp消息函数中删除CDialog::OnRButtonUp(nFlags, point);即可。
      

  9.   

    绝对可以从 PreTranslateMessage 中过滤掉的
    很简单,判断一下就是了
      

  10.   

    可以考虑安装一个鼠标HOOK来监视鼠标右键消息
    HHOOK g_hMouse = NULL;
    g_hMouse = SetWindowsHookEX(WH_MOUSE_LL; LowLevelMouseProc, NULL, GetCurrentThreadId());
    LRESULT CALLBACK LowLevelMouseProc(int nCode, WPARAM wParam, LPARAM lParam )
    {
      if (wParam == WM_RBUTTONDOWN)
       {
         return 1;
       }
    }
    可以看下MSDN用法
      

  11.   

    LZ不想弹框很简单哈,直接用MessageBeep(0)好了呀,嘿嘿
      

  12.   

    OnContextMenu(CWnd* pWnd, CPoint point) 看看这个函数你就知道怎么做了!!!