NSSplitView 中的 NSOpenGLView

发布于 2024-08-29 17:54:50 字数 447 浏览 10 评论 0原文

当我将 NSOpenglView 放入 NSSplitView 中时,拖动拆分器时会出现问题。 openGLView 和 SplitView 正在异步调整大小。我在苹果邮件列表线程 http://developer 中找到了解决方案.apple.com/mac/library/samplecode/GLChildWindowDemo/Introduction/Intro.html

我找到了一个带有一些碳调用的解决方案。但现在我收到链接错误(仅在发布模式下)。

所以我有两个问题 - 有没有可可方法可以解决分离器 - gl 问题? 如果不是 - 我如何修复发布模式下的碳链接器错误?

When i put an NSOpenglView in NSSplitView, a problem occurs while dragging splitter.
The openGLView and SplitView are resizing asynchronously. i found a solution in apple mail list thread http://developer.apple.com/mac/library/samplecode/GLChildWindowDemo/Introduction/Intro.html

and i found a solution with some carbon calls. but now i get link error (only in release mode).

so i'v got two questions - is there any cocoa way to fix the splitter - gl problem?
if no - how can i fix carbon linker errors in release mode?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

≈。彩虹 2024-09-05 17:54:50

我找到了答案。

正确的方法是在 MYWindow 中实现这些方法: NSWindow

BOOL needsEnableUpdate;

-(void)disableUpdatesUntilFlush
{
    if(!needsEnableUpdate)
        NSDisableScreenUpdates();
    needsEnableUpdate = YES;
}

-(void)flushWindow
{
    [super flushWindow];
    if(needsEnableUpdate)
    {
        needsEnableUpdate = NO;
        NSEnableScreenUpdates();
    }
}

和 NSSplitterView 委托中实现

#pragma mark NSSplitView Delegate
-(void)splitViewWillResizeSubviews:(NSNotification *)notification
{
    [window disableUpdatesUntilFlush];
}

我的问题是我尝试使用 Carbon 调用:

DisableScreenUpdates();
EnableScreenUpdates();

而不是 cocoa 调用:

NSDisableScreenUpdates();
NSEnableScreenUpdates();

I found the answer.

the right way is to implement thees methods in your MYWindow : NSWindow

BOOL needsEnableUpdate;

-(void)disableUpdatesUntilFlush
{
    if(!needsEnableUpdate)
        NSDisableScreenUpdates();
    needsEnableUpdate = YES;
}

-(void)flushWindow
{
    [super flushWindow];
    if(needsEnableUpdate)
    {
        needsEnableUpdate = NO;
        NSEnableScreenUpdates();
    }
}

and in NSSplitterView delegate implement

#pragma mark NSSplitView Delegate
-(void)splitViewWillResizeSubviews:(NSNotification *)notification
{
    [window disableUpdatesUntilFlush];
}

my problem was that i tried to use carbon calls:

DisableScreenUpdates();
EnableScreenUpdates();

instead of cocoa ones:

NSDisableScreenUpdates();
NSEnableScreenUpdates();
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文