编辑控件和WM_CONTEXTMENU消息

时间:2015-08-07 14:54:19

标签: c winapi

我有一个编辑控件,它是hWnd的孩子,我面临的问题是,当我右键单击编辑控件上的鼠标时,WM_CONTEXTMENU消息不会发送到{ {1}}窗口过程(例如,当我单击ListView时,会发送hWnd消息。)

我想要做的是用我自己的弹出菜单替换默认的编辑控件弹出菜单。

1 个答案:

答案 0 :(得分:3)

WM_CONTEXTMENU消息将发送到编辑控件。您可能希望将其发送给父母。只有当邮件传递给DefWindowProc时才会发生这种情况,就像列表视图一样。

来自WM_CONTEXTMENU documentation

  

如果窗口没有显示快捷菜单,则应将此消息传递给DefWindowProc函数。如果窗口是子窗口,则DefWindowProc将消息发送给父窗口。否则,如果指定的位置在窗口的标题中,DefWindowProc将显示默认快捷菜单。

因此,编辑控件和列表视图之间的区别如下:

  • 列表视图不显示快捷菜单是否将消息传递到DefWindowProc。该窗口是子窗口,因此消息将发送给父窗口。在哪里捕捉它。
  • 编辑控件会显示快捷菜单,因此不会将消息传递到DefWindowProc。这意味着它永远不会被发送到父级,而您的代码也看不到它。

您需要对编辑控件进行子类化,并在子类窗口过程中侦听WM_CONTEXTMENU