- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在尝试将上下文菜单添加到我的应用程序中的(大型)自定义控件中,但在创建它们时遇到了很多问题。
有 3 种情况需要创建上下文菜单(除非我忘记了一个...):鼠标右键单击、按下菜单键和 Shift + F10。在所有情况下,菜单都是通过 ContextMenu 方法创建和显示的。
鼠标右键还有其他一些特殊的功能,因此不应该总是创建上下文菜单。我正在处理各种鼠标事件并根据需要调用 ContextMenu,一切正常。
问题出在键盘生成的上下文菜单上。我在我的控件中为 EVT_CONTEXT_MENU 设置了一个处理程序,然后只调用 ContextMenu。在很多情况下,两个组合键似乎都被忽略了。有时 Shift+F10 可以正常工作,但在相同的情况下,菜单键会以某种方式调用我的鼠标右键单击处理程序,从而导致不正确的行为...
对于菜单键,我也尝试过处理按键事件,但是菜单键似乎从来没有在 wxWidgets 中触发这些事件,尽管所有其他键似乎都工作正常......
为什么 wxWidgets 以某种方式忽略了关键方法。只要控件具有焦点,它们就应该工作。当他们开始“工作”时,他们会一直工作,直到它再次失去焦点,但我不确定他们为什么不开始或是什么导致他们开始工作(我不处理任何上下文菜单或其他任何地方的关键事件我的测试应用)。
菜单键事件如何进入我的 EVT_RIGHT_UP 处理程序而不是键事件或上下文菜单事件?
我认为我对 wxWidgets 如何处理这些键的理解存在根本性的错误,但是在查看文档和网上一段时间后,我没有找到任何关于我的问题的信息。
我在 Windows Vista 上使用 wxMSW 2.8.10。
最佳答案
wxWidgets 是一个抽象出平台差异的库,例如哪些鼠标或按键事件应该导致上下文菜单出现。可能存在差异,例如它是在按下鼠标时出现,还是在鼠标抬起时出现,甚至(在 Mac 上)在 Ctrl+ 单击单个鼠标按钮时出现。
因此,您不应直接处理鼠标和键盘事件,而应处理 wxContextMenuEvent
反而。请注意,它将在鼠标和键盘事件之后调用:
Note that if wxContextMenuEvent::GetPosition returns wxDefaultPosition, this means that the event originated from a keyboard context button event, and you should compute a suitable position yourself, for example by calling wxGetMousePosition().
请注意,您还可以抑制某些鼠标事件的事件并为其他鼠标事件生成该事件:
When a keyboard context menu button is pressed on Windows, a right-click event with default position is sent first, and if this event is not processed, the context menu event is sent. So if you process mouse events and you find your context menu event handler is not being called, you could call wxEvent::Skip() for mouse right-down events.
希望用此事件的处理程序替换上下文菜单的当前代码会起作用。对于所有还应导致上下文菜单出现的鼠标事件,您需要调用 event.Skip()
,也许不这样做是您现在得到不一致结果的原因。
关于c++ - wxWidgets 和上下文菜单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2351665/
出现以下错误 Network access for Distributed Transaction Manager (MSDTC) has been disabled. Please enable D
在调试应用程序时出现以下错误。 The CLR has been unable to transition from COM context 0x3b2d70 to COM context 0x3b2
在 GAE Go 中,为了记录,我们需要使用 appengine.NewContext(r) 创建一个新的上下文,它返回 context.Context。 如何使用此上下文在请求范围内设置/获取变量?
我想使用 Puppeteer 从放置在页面上 iframe 内的选择器中获取数据,该页面在与其父框架域不同的域上运行。因此,我不是任何域的所有者 - 无法使用 frame.postMessage。 试
我正在尝试获取可用的应用程序上下文并想切换到 webview 上下文,但 appium 仅获取 Navive App。 应用程序还启用了 WebView。 Appium 版本:1.10.1 Chrom
这个问题在这里已经有了答案: How to fix this nullOk error when using the flutter_svg package? (7 个回答) 7 个月前关闭。 当我尝
我观看了关于 Core Data 的 2016 WWDC 视频并查看了各种教程。我见过使用 Core Data Framework 创建对象以持久保存到 managedObjectContext 中的
这是代码 obj = { a: 'some value'; m: function(){ alert(this.a); } } obj.m(); 结果是'som
我正在尝试做类似的事情 $(".className").click(function() { $(this).(".anotherClass").css("z-index","1");
var User = { Name: "Some Name", Age: 26, Show: function() { alert("Age= "+this.Age)}; }; fun
我目前正在使用我见过的常见 Context 模式,它允许子组件通过传递修饰函数来更新父组件的状态(即 Provider)通过共享的 Context。 我遇到的问题是,修改函数只引用原始状态,不引用最新
有没有办法让 React Context类型安全与流类型? 例如: Button.contextTypes = { color: React.PropTypes.string }; 最佳答案 不幸
我想知道是否有一种方法可以为不同的功能使用不同的上下文类。 我希望有一个功能使用 MinkExtensions 进行浏览器测试,另一个功能使用和 HTTP 客户端(如 Guzzle)进行 API 测试
我有这个配置文件 apiVersion: v1 clusters: - cluster: server: [REDACTED] // IP of my cluster name: stag
我在实现非抢先式调度时遇到了用于初始化TCB的代码。 typedef struct TCB_t { struct TCB_t *next; struct TCB_t
我想将一个函数设置为数组中每个元素的属性,但使用不同的参数调用它。我想我会使用匿名函数来解决它: for ( var i = 0; i < object_count; i++ ) { obje
这个问题已经有答案了: How to access the correct `this` inside a callback (15 个回答) 已关闭 7 年前。 我正在做一些练习,但我在管道方法中丢
我正在尝试通过 Java 和 Android Studio 学习和制作 Android 应用程序。我对Java的了解程度是两年前几个小时的youtube学习和大学基础类(class)。不过我确实知道如
我在(这个)上遇到了问题。错误ImageView无法应用。我在 fragment 类中执行此代码。 ViewFlipper v_flipper; @Nullable @Override public
我想使用 openGL 的某些功能,但与渲染视觉内容无关。有没有办法在没有任何依赖性的情况下创建它(不是对 Windows,也不是某些包[SDL,SFML,GLUT])?只允许使用没有外部库的库,就像
我是一名优秀的程序员,十分优秀!