我有一个编辑控件,它是hWnd
的孩子,我面临的问题是,当我右键单击编辑控件上的鼠标时,WM_CONTEXTMENU
消息不会发送到{ {1}}窗口过程(例如,当我单击ListView时,会发送hWnd
消息。)
我想要做的是用我自己的弹出菜单替换默认的编辑控件弹出菜单。
答案 0 :(得分:3)
WM_CONTEXTMENU
消息将发送到编辑控件。您可能希望将其发送给父母。只有当邮件传递给DefWindowProc
时才会发生这种情况,就像列表视图一样。
来自WM_CONTEXTMENU
documentation:
如果窗口没有显示快捷菜单,则应将此消息传递给DefWindowProc函数。如果窗口是子窗口,则DefWindowProc将消息发送给父窗口。否则,如果指定的位置在窗口的标题中,DefWindowProc将显示默认快捷菜单。
因此,编辑控件和列表视图之间的区别如下:
DefWindowProc
。该窗口是子窗口,因此消息将发送给父窗口。在哪里捕捉它。DefWindowProc
。这意味着它永远不会被发送到父级,而您的代码也看不到它。您需要对编辑控件进行子类化,并在子类窗口过程中侦听WM_CONTEXTMENU
。