Установить фокус на окно какао в приложении Carbon - PullRequest
0 голосов
/ 13 июля 2010

Я пытаюсь создать окно какао в другом приложении углерода (это API OpenGL, который использует AGL. Не могу изменить его, поэтому не комментируйте это).

Вот фрагмент кода:

WindowRef winref = static_cast<eq::AGLWindow*>(getOSWindow())->getCarbonWindow();
vc = [[SFAttachedViewController alloc] initWithConfig:config]; //loads from view nib
NSPoint buttonPoint = NSMakePoint(event.pointerButtonPress.x + [cocoaWrap frame].origin.x, [cocoaWrap frame].size.height - event.pointerButtonPress.y + [cocoaWrap frame].origin.y);
MAAttachedWindow *attachedWindow = [[MAAttachedWindow alloc] initWithView:[vc view] attachedToPoint:buttonPoint onSide:side atDistance:0.0f]; // some Matt Gemmell goodness!

И я пытаюсь показать это одной из следующих строк:

// A)
[NSApp runModalForWindow:[attachedWindow retain]]; // makes a white box
// B)
NSWindow *cocoaWrap = [[NSWindow alloc] initWithWindowRef:winref];
[cocoaWrap addChildWindow:attachedWindow ordered:NSWindowAbove];
// C)
[attachedWindow makeKeyAndOrderFront:NSApp];

Окно показывает, но фокус никогда не дается. Я не могу изменить ни один из элементов управления, и все отображается серым цветом.

помощь!

Я пытался

HIViewRef viewRef;
HICocoaViewCreate([vc view], 0, &viewRef);
WindowRef attachedRef = (WindowRef)[attachedWindow windowRef];
SetKeyboardFocus(attachedRef, viewRef, kControlNoPart);

Думал, что это могло быть углеродом / какао, но безрезультатно.

1 Ответ

2 голосов
/ 13 июля 2010

Вы вызывали NSApplicationLoad() до вызова методов Какао?

...