查看源代码 wxContextMenuEvent (wx v2.4.3)
此类用于上下文菜单事件,发送以使应用程序有机会为 wxWindow
显示上下文(弹出)菜单。
请注意,如果 getPosition/1
返回 wxDefaultPosition,则表示该事件源自键盘上下文按钮事件,您应该自行计算合适的显示位置,例如调用 wx_misc:getMousePosition/0
。
请注意,鼠标事件的确切顺序在不同平台上是不同的。例如,在 MSW 下,上下文菜单事件是在 EVT_RIGHT_UP
事件之后生成的,并且只有在它没有被处理的情况下才会生成;而在 GTK 下,上下文菜单事件是在 EVT_RIGHT_DOWN
事件之后生成的。这在某种意义上是正确的,它确保上下文菜单根据当前平台的 UI 约定显示,并且还意味着如果您计划处理 EVT_CONTEXT_MENU
事件,则不能处理(或在您的处理程序中调用 wxEvent:skip/2
)右键按下或右键抬起事件。
参见
此类派生自以下类,并可以使用其函数:
wxWidgets 文档: wxContextMenuEvent
事件
使用 wxEvtHandler:connect/3
和 wxContextMenuEventType
来订阅此类事件。
摘要
类型
-type wxContextMenu() :: #wxContextMenu{type :: wxContextMenuEvent:wxContextMenuEventType(), pos :: {X :: integer(), Y :: integer()}}.
-type wxContextMenuEvent() :: wx:wx_object().
-type wxContextMenuEventType() :: context_menu.
函数
-spec getPosition(This) -> {X :: integer(), Y :: integer()} when This :: wxContextMenuEvent().
返回应该显示菜单的屏幕坐标位置。
使用 wxWindow:screenToClient/2
转换为客户区坐标。
您也可以从 wxWindow:popupMenu/4
中省略位置,以便使用当前鼠标指针位置。
如果事件源自键盘事件,则此函数返回的值将为 wxDefaultPosition。
-spec setPosition(This, Point) -> ok when This :: wxContextMenuEvent(), Point :: {X :: integer(), Y :: integer()}.
设置应该显示菜单的位置。