在学习Windows.Programming Windows with MFC, 2nd Edition时,看到第四章Menus的Menu Magic中的Context Menus小节。有一段话有些费解:
写道
If necessary, you can translate the screen coordinates passed in point into client coordinates with CWnd::ScreenToClient. It might seem curious that OnContextMenu receives a pointer identifying a window since mouse messages go to the window under the cursor. However, there's a reason. Unlike other messages, WM_CONTEXTMENU messages percolate upward through
the window hierarchy if a right-click occurs in a child window (for example, a push button control) and the child window doesn't process the message. Therefore, if a window contains child windows, it could receive WM_CONTEXTMENU messages with pWnd containing a pointer to one of its children.
多读了几遍,GOOGLE了一下,
http://newdata.box.sk/bx/c/htm/ch13.htm#Heading6
发现这篇文章有个“percolating upward”。呵呵,一下子明白了,不久是说“向上转型”吗。
相应的“percolate upward through
”,不就是说“WM_CONTEXTMENU消息从子窗口传递到父窗口,子窗口执行该消息”。
分享到:
相关推荐
**WM_NOTIFY消息详解** 在Windows应用程序开发中,`WM_NOTIFY`消息是一个至关重要的部分,它在父窗口和子窗口之间提供了通信的桥梁。这个消息主要用于控件向其父窗口报告事件,例如当用户与控件交互时,如点击按钮...
删除Win11新版右键菜单多余项目_Win11_ContextMenu_Item_Deleter_v1.01
13. ON_WM_CONTEXTMENU:右键单击时,发送此消息,OnContextMenu处理函数显示上下文菜单。 14. ON_WM_COPYDATA:用于在应用程序间传递数据,处理函数OnCopyData接收另一窗口的指针和数据结构。 15. ON_WM_CREATE:...
在Flex开发中,右键菜单(ContextMenu)是一个重要的交互元素,它允许用户通过鼠标右键点击来触发一系列可定制的操作。本压缩包“flex_ContextMenu.zip_flex”提供了关于如何在Flex项目中创建和使用右键菜单的详细...
标题 "TakeOwnership_registryeditor_ContextMenu_ownership开发_" 暗示了这个压缩包涉及的是一个Windows系统中的功能增强,特别是关于文件和文件夹所有权的管理。这个功能允许用户通过右键菜单快速获得某个文件或...
在`Unit1.pas` 文件中,我们需要编写代码来响应`WM_CONTEXTMENU`消息。这个消息会在用户点击右键时触发。我们需要在这个消息处理函数中获取Edit控件的当前菜单,然后使用`MN_GETHMENU`消息获取到它的句柄。然后,...
如果你想处理WM_SYSCOMMAND消息、WM_CONTEXTMENU消息,那么可以这样定义: Msghook1.Message(WM_SYSCOMMAND) = True Msghook1.Message(WM_CONTEXTMENU) = True 事件 Msghook控件只有一个事件,定义如下: Sub...
当用户尝试通过右键菜单或快捷键(如Ctrl+V)进行粘贴时,系统会发送WM_CONTEXTMENU和WM_KEYDOWN消息到编辑框控件。我们可以拦截这些消息,并在处理函数中忽略或改变它们的行为。 描述中提到的"屏蔽了右键菜单和...
`WM_CONTEXTMENU` 是一个非常重要的Windows消息,当用户在某个控件上按下鼠标右键时,系统会发送此消息给该控件。默认情况下,此消息触发的是系统的默认右键菜单。为了自定义这个行为,我们需要拦截并处理这个消息。...
2. **使用API拦截WM_CONTEXTMENU消息**:除了简单地禁用和启用文本框外,我们还可以更进一步地控制右键菜单的行为。通过API函数拦截`WM_CONTEXTMENU`消息可以阻止默认的右键菜单弹出。 ```vb Option Explicit ...
这通常需要创建一个新的弹出式菜单,添加所需的菜单项,然后在接收到WM_CONTEXTMENU消息时显示这个自定义菜单。这样,用户就可以看到与应用功能相关的选项,而不是浏览器的标准选项。 实现这个功能的具体步骤如下:...
WM_CONTEXTMENU(0x007B):上下文菜单弹出时发送。 WM_STYLECHANGING(0x007C):窗口风格改变前发送。 WM_STYLECHANGED(0x007D):窗口风格改变后发送。 WM_DISPLAYCHANGE(0x007E):显示设备设置改变时发送。 WM_...
Public Const WM_CONTEXTMENU = &H7B ' WM_CONTEXTMENU消息的ID ' 获取窗口的长整型属性 Public Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long)...
7. 处理消息:实现窗口消息处理函数,处理如`WM_NOTIFY`、`WM_CONTEXTMENU`等消息。`WM_NOTIFY`消息用于响应ListView的事件,如项被点击或选中状态改变。`WM_CONTEXTMENU`消息则用于处理右键单击事件,实现右键菜单...
当用户在窗口上按下鼠标右键时,会发送`WM_CONTEXTMENU`消息。我们可以通过拦截并处理这个消息来阻止右键菜单的显示。 在易语言中,我们通常通过定义窗口过程(Window Procedure)来处理这些消息。窗口过程是一个...
在处理右键点击事件时,通常需要捕获WM_CONTEXTMENU消息,这是一个系统消息,表示用户在窗口上执行了右键操作。 "调用窗体过程_API"指的是利用API函数(Application Programming Interface)来处理窗体事件。API...
- WM_CONTEXTMENU ($007B):当用户右击鼠标显示上下文菜单时发送此消息。 - WM_STYLECHANGING ($007C):当窗口样式改变前发送此消息。 - WM_STYLECHANGED ($007D):当窗口样式改变后发送此消息。 - WM_DISPLAYCHANGE...
4. **处理WM_CONTEXTMENU消息**:当接收到WM_CONTEXTMENU消息时,可以创建并显示一个自定义的弹出菜单,或者执行预先定义好的功能。 5. **菜单定义(CreatePopupMenu, InsertMenuItem等)**:使用Windows API函数...
3. **处理WM_CONTEXTMENU**:当检测到WM_CONTEXTMENU消息时,你可以选择直接返回,不执行默认的行为,或者显示自定义的菜单,甚至可以完全禁止右键操作。 4. **卸载钩子**:在不再需要屏蔽右键时,使用"卸载钩子...
3. **SVG_contextMenu**:在SVG图形上添加右键上下文菜单是常见的交互功能。这可能涉及到监听鼠标事件,以及使用JavaScript或C#库来实现菜单项的显示和回调函数。 4. **svg_csharp**:这个标签可能表示这个项目中...