J'essaye d'installer un NSTrackingArea dans une vue en plein écran afin d'obtenir des événements déplacés par la souris. Cependant, chaque fois que je le fais, j'obtiens une erreur d'assertion. J'ai cherché sur le web, mais je n'ai pas trouvé de piste.NSTrackingArea avec fenêtre/vue plein écran
*** Assertion failure in -[_NSFullScreenWindow _setTrackingRect:inside:owner:userData:useTrackingNum:install:], /SourceCache/AppKit/AppKit-1038.25/AppKit.subproj/NSWindow.m:3944
Voici le code qui définit la zone de suivi (x = 1 024, y = 768):
cocoaWindow = [[NSWindow alloc] initWithContentRect:NSMakeRect(0.0, 0.0, x,y)
styleMask: NSTitledWindowMask
backing: NSBackingStoreBuffered
defer:NO];
glView = [[WLMacGLView alloc] initWithFrame:NSMakeRect(0.0, 0.0, x,y) pixelFormat:[WLMacGLView defaultPixelFormat]];
[glView setCocoaController:self];
//add the glView as a subview of the window's content view
[[cocoaWindow contentView] addSubview:glView];
NSRect r = [glView frame];
NSTrackingArea *track = [[NSTrackingArea alloc] initWithRect:r options: NSTrackingMouseMoved | NSTrackingActiveWhenFirstResponder | NSTrackingActiveInKeyWindow
owner:self userInfo:nil];
[glView addTrackingArea:track];
[glView enterFullScreenMode:[NSScreen mainScreen] withOptions:nil];
[glView createContext];
L'affirmation se produit juste après l'appel à enterFullScreenMode: withOptions:
Toute personne Vous avez des idées? Est-ce que ce n'est pas l'approche que je devrais prendre pour obtenir des événements déplacés par la souris dans une fenêtre en plein écran?
Ces méthodes sont implémentées, mais elles ne sont pas appelées lorsque la fenêtre est en plein écran. – wadesworld
Il existe un exemple d'application que vous pouvez consulter: http://developer.apple.com/mac/library/samplecode/GeekGameBoard/index.html (il utilise une sous-classe NSView et non une OpenGL). –
Assurez-vous que vous appelez '[[glView window] setAcceptsMouseMovedEvents: YES]' si vous voulez utiliser '-mouseMoved:'. –