4

NSOpenglViewをNSSplitViewに配置すると、スプリッターのドラッグ中に問題が発生します。openGLViewとSplitViewは非同期でサイズ変更されています。アップルのメールリストスレッドhttp://developer.apple.com/mac/library/samplecode/GLChildWindowDemo/Introduction/Intro.htmlで解決策を見つけました

そして私はいくつかのカーボンコールで解決策を見つけました。しかし今、私はリンクエラーを受け取ります(リリースモードでのみ)。

だから私は2つの質問があります-スプリッターを修正するココアの方法はありますか-glの問題?いいえの場合-リリースモードでカーボンリンカーエラーを修正するにはどうすればよいですか?

4

1 に答える 1

4

私は答えを見つけました。

正しい方法は、MYWindowにtheesメソッドを実装することです: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];
}

私の問題は、カーボンコールを使おうとしたことでした。

DisableScreenUpdates();
EnableScreenUpdates();

ココアのものの代わりに:

NSDisableScreenUpdates();
NSEnableScreenUpdates();
于 2010-04-21T23:14:29.973 に答える