2009-10-20 2 views
1

저는 Carbon LSUIElement 응용 프로그램이 있습니다.이 응용 프로그램은 백그라운드에서 실행되며 (경우에 따라 메뉴 모음의 아이콘이 포함될 수 있음) 사용자에게 대화 상자를 표시해야 할 수도 있습니다. 사용자 이벤트에 대한 응답이지만, 실패하거나 유사한 백그라운드 작업에 대한 응답으로 가끔 발생합니다.Carbon, LSUIElement 및 창 표시

(저는 Qt 4.5를 사용하고있어 응용 프로그램은 Carbon 기반이므로 Qt 4.6에서는 코코아 기반이지만 문제가있는 것처럼 들립니다).

문제는 내가 창을 열어 보여 주면 문제가되지 않는다는 것입니다. 나는 이것이 LSUIElement 응용 프로그램의 artefect라고 가정합니다. Qt는 Carbon에서 SelectWindow를 사용하고 Cocoa에서 [makeKeyAndOrderFront]를 사용하여 창 (및 응용 프로그램)을 앞으로 가져옵니다.

: (하는 nativeWindow 처음 몇 단계는 내가 NSWindow 표시를 사용할 수 있기 때문에,이, Qt는 코코아와 간단하게 될 것 WINDOWID를 얻을 수 있습니다)

나는 윈도우 서버에 직접가는 시도,이 문제를 해결하려면
WindowRef ref = HIViewGetWindow((HIViewRef) aWidget->winId()); 
CGSWindow wid = GetNativeWindowFromWindowRef(ref); 
CGSConnection cid =_CGSDefaultConnection(); 
CGSOrderWindow(cid, wid, 1 /* above everything */, 0 /* NULL */); 

일종의 -이 창은 앞쪽으로 나오지만 강조 표시되어 있지 않거나 키보드에 초점을 맞추지 않았습니다. 이러한 문제를 해결하기위한 추가 단계가 있습니까? 아니면 전체 문제에 대한 간단한 해결책이 있습니까?

답변

1

다른 앱 앞에 창을 가져 오려면 SetFrontProcessWithOptions를 사용하십시오.

0

시도 :

[NSApp activateIgnoringOtherApps: YES]