none
CDockablePane 浮动时候屏蔽右键的问题 RRS feed

  • 问题

  • CDockablePane右键菜单的屏蔽

    在停靠的时候右键菜单已经完全屏蔽掉了

    在浮动的时候,点击CDockablePane客户区域右键菜单也是OK的

    可是点击CDockablePane的标题栏右键的系统菜单还会出现,请问这个具体怎么屏蔽?

    谢谢

    2019年2月21日 11:21

全部回复

  • 你好,

    感谢您在MSDN论坛发帖提问。

    >>点击CDockablePane的标题栏右键的系统菜单还会出现,请问这个具体怎么屏蔽?

    WM_CONTEXTMENU消息,用于通知窗口用户在窗口中单击鼠标右键(右键单击)。如果窗口没有显示快捷菜单,则应将此消息传递给DefWindowProc函数。如果窗口是子窗口,则DefWindowProc将消息发送给父窗口。如果指定的位置在窗口的标题中,则DefWindowProc将显示默认快捷菜单。

    所以如果你想屏蔽窗口的系统菜单,就只需要让系统没有机会响应WM_CONTEXTMENU消息就行了。在该类上添加WM_CONTEXTMENU消息,然后添加该消息响应函数,也就是相当于重载了系统默认的右键菜单响应。注释掉默认的代码,就可以屏蔽掉右键响应了。

    Best wishes,

    Jeanine Zhang

    2019年2月22日 5:25
    版主
  • 额~~

    我可能没表达清楚

    我已经加了这个消息WM_CONTEXTMENU

    大部分情况下是正常了,不再有右键菜单了

    可是在这个CDockablePane 浮动起来的时候

    点击这个CDockablePane的标题栏,这个时候右键菜单还是会出现


    点击其他地方右键是OK的

    2019年2月25日 1:43
  • 你好,

    如果您想要使此菜单消失,您可以尝试覆盖OnShowControlBarMenu并返回TRUE。

    CPane :: OnShowControlBarMenu当即将显示特殊窗格菜单时由框架调用。如果可以显示菜单,则为TRUE; 否则,FALSE。

    Best wishes,

    Jeanine Zhang

    • 已标记为答案 Hota_CT 2019年2月25日 6:41
    • 取消答案标记 Hota_CT 2019年2月26日 8:58
    2019年2月25日 3:28
    版主
  • OK了 , 谢谢你
    2019年2月25日 6:41
  • 我试了一下,对单个的CDockablePane浮动起来是OK的

    但是如果2个CDockablePane浮动起来,把他们重叠到一起,再次点击标题栏右键菜单还是存在的

    这个时候该怎么屏蔽呢?

    2019年2月26日 9:02
  • 你好,

    >>但是如果2个CDockablePane浮动起来,把他们重叠到一起,再次点击标题栏右键菜单还是存在的
    这个时候该怎么屏蔽呢?

    您可以通过调用CDockingManager :: EnableDockSiteMenu为所有窗格启用/不显示此菜单。将它设置为FALSE,不显示右键菜单。

    Best wishes,

    Jeanine Zhang

    2019年2月26日 9:34
    版主
  • 试了下还是不行,还有别的什么方法或者思路吗?
    2019年3月4日 12:28
  • 你好,

    我建议您使用CDockablePane::AttachToTabWnd将当前窗格附加到目标窗格中,创建选项卡式的窗格。选项卡式窗格是一种将窗格彼此对接的概念,以形成内部具有单独窗格的常规选项卡控件。应用某些命令将影响所有窗格。然后在使用上面提到的方法对标题栏右键菜单栏选项进行屏蔽。

    Best wishes,

    Jeanine Zhang

    2019年3月5日 9:45
    版主