- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我正在尝试实现 Cocoa 消息泵。我对 Cocoa API 没有太多经验,但我设法使用 NSApp nextEventMatchingMask
实现了一个基本的泵。
这种方法的问题是我没有获得所有事件,而且我获得的事件似乎只针对主窗口,而不是窗口中的任何小部件。
我的 UI 是用代码生成的(没有 nib),我没有使用 Cocoa runLoop(因此需要消息泵)。我试图将所有 Objective-C++ 和 Cocoa 代码保持在最低限度。
需要遍历所有传入事件并将它们分派(dispatch)给适当的函数以根据对象和事件来处理它们。
这是伪代码来展示我的意思(以及我所拥有的,主要是,除了它只做“主窗口”事件)
event = GetNextEvent();
while (event)
{
if(event->type == MOUSE_DOWN)
{ mouse_down(event->target); }
event = GetNextEvent();
}
在 OS X 上有什么技巧吗?
最佳答案
抱歉,但正如评论中已经提到的那样 -
尝试使用 Cocoa 模仿 Classic Mac OS 7 风格的运行循环并不是一个好主意,因为 AppKit 中的几乎所有内容(计时器、通知、事件、队列...)都依赖于Cocoa 应用程序的每个线程 中都存在“适当的”NSRunLoop
。
可以查看this page on CocoaDev或 NSRunLoop docs获取更深入的信息。
要获得简约的 Cocoa 示例应用,请查看“Cocoa With Love”博客上的这篇精彩博文:
<强> Minimalist Cocoa programming
关于c++ - cocoa 消息泵?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16074748/
我要附上 child window到外部应用程序。子窗口将是一个无模式对话框。由于我不拥有外部应用程序(实际上是 Microsoft FSX)的源代码,因此我不知道如何挂接到消息循环或回调中 LRES
更新:在确保我的命令、串行配置和终止符 ('\r') 正确后,我在 5 台计算机中的 1 台上运行。这让我相信这是一个适配器问题。我打算调用公司,了解有关订购 USB/RJ11 适配器的信息(我一直在
我是一名优秀的程序员,十分优秀!