Какао сообщение насос?

Я пытаюсь реализовать насос сообщений Какао. У меня нет большого опыта работы с API Какао, но мне удалось реализовать элементарный насос, используя NSApp nextEventMatchingMask,

Проблема с этим подходом состоит в том, что я не получаю все события, а те, которые я делаю, кажутся только для главного окна, а не для каких-либо виджетов в окне.

Мой пользовательский интерфейс генерируется в коде (без перьев), и я не использую Какао runLoop (таким образом, необходимость в прокачке сообщений). Я пытаюсь свести весь код Objective-C ++ и Какао к минимуму в этом.

Необходимо циклически перебирать все входящие события и отправлять их соответствующим функциям для их обработки в зависимости от объекта и события.

Вот псевдокод, чтобы показать, что я имею в виду (и то, что я имею, в основном, за исключением того, что это только события «главного окна»)

event = GetNextEvent();
while (event)
{
if(event->type == MOUSE_DOWN)
{ mouse_down(event->target); }
event = GetNextEvent();
}

Есть ли какая-то хитрость с этим на OS X?

2

Решение

Извините, но как уже упоминалось в комментариях —

это не очень хорошая идея, пытаясь подражать Классическая Mac OS 7 стиль запуска цикла с Какао, так как почти все (таймеры, уведомления, события, очереди, …) в AppKit основаны на существовании «правильного» NSRunLoop в каждая нить приложения какао.

Ты можешь проверить эта страница на CocoaDev или NSRunLoop документы для получения более подробной информации.

Чтобы ознакомиться с минималистичным образцом приложения Cocoa, ознакомьтесь с этой великолепной записью в блоге наКакао с любовьюблог:
Минималистское программирование Какао

3

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector