gpt4 book ai didi

c++ - cocoa 消息泵?

转载 作者:搜寻专家 更新时间:2023-10-31 01:49:46 26 4
gpt4 key购买 nike

我正在尝试实现 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 CocoaDevNSRunLoop docs获取更深入的信息。

要获得简约的 Cocoa 示例应用,请查看“Cocoa With Love”博客上的这篇精彩博文:
<强> Minimalist Cocoa programming

关于c++ - cocoa 消息泵?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16074748/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com