如何改变NSCarbonWindow的可见度?

时间:2012-04-11 14:50:44

标签: objective-c macos cocoa

我正在使用::RunAppModalLoopForWindow(WindowPtr)来运行碳窗作为模态。但在某些时候,我需要显示/隐藏所有应用程序的窗口:

NSArray* windowNumbers = [NSWindow windowNumbersWithOptions:0];

for (NSNumber* windowNumber in windowNumbers)
{
    NSWindow* window = [[NSApplication sharedApplication] windowWithWindowNumber:[windowNumber integerValue]];

        [window setAlphaValue:CGFloat(showFlag)];
}

但窗口NSCarbonWindow*不响应setAlphaValue,因此窗口不会改变其可见性。

另外,我不知道NSCarbonWindow的定义在哪里,所以我可以从NSWindow投射到NSCarbonWindow。

1 个答案:

答案 0 :(得分:1)

怎么样:

if ([window respondsToSelector: @selector(setAlphaValue:)])
    [window setAlphaValue:CGFloat(showFlag)];
else if (showFlag)
    ShowWindow( [window windowRef] );
else
    HideWindow( [window windowRef] );