2009-10-03 10 views
3

Je souhaite créer une application de plein écran Cocoa, mais mon application est légèrement différente d'une application classique en mode plein écran. Cette application serait au-dessous de tout le reste, donc sous la barre de menu et le Dock, etc. Elle aurait une grande image couvrant le bureau et les icônes, avec un NSView personnalisé au milieu avec une vue de table, etc. Si ce concept est difficile à comprendre alors est ici une image:Création d'une application Cocoa en plein écran

http://img10.imageshack.us/img10/6308/mockupo.png

la seule partie qui pourrait être un peu déroutant est l'image d'arrière-plan. Cette image de fond n'est pas le fond d'écran de l'ordinateur, mais une partie de l'application. Ainsi, lorsque l'application est lancée, elle passe en mode plein écran et se place sous le dock et la barre de menu, ainsi que sous toutes les autres fenêtres. Donc, il dessine l'image de fond pour couvrir l'écran (y compris le bureau et les icônes). Puis a un NSView personnalisé au milieu contenant mes contrôles.

Quelle est la meilleure façon de procéder?

Merci

Répondre

6

Faire une fenêtre sans bordure, la taille de l'écran la barre de menu (écran pas 0- [NSScreen mainScreen]), positionné à 0,0, avec le niveau de la fenêtre kCGDesktopWindowLevel. Rappelez-vous que vous devez observer les notifications de changement de trame d'écran (lorsque l'utilisateur change les dimensions de l'écran), et que vous devez gérer correctement le cas de pas d'écran du tout (Mac sans tête).

+1

Essayé cela et cela fonctionne dans une certaine mesure. Le problème est que d'autres fenêtres (par exemple, les fenêtres du Finder et d'autres fenêtres d'application) passent en dessous de ma fenêtre plein écran. J'ai besoin qu'ils soient positionnés AU-DESSUS de ma fenêtre plein écran. Des moyens de faire ce travail? Merci – indragie

+1

Comme je l'ai dit, réglez le niveau de la fenêtre sur 'kCGDesktopWindowLevel'. –

1

Je pense que la solution de @Peter Hosey devrait fonctionner, mais pour faire passer d'autres fenêtres au premier plan, vous devrez probablement changer le niveau de la fenêtre pour autre chose.

Mais, je vous implore, ne faites pas cela. Ce sera l'application la plus bête que le Macintosh ait jamais vue. Il y a beaucoup de très bons paradigmes d'interface utilisateur que vous pouvez utiliser, et la "réplication" de l'interface de bureau principale de Mac OS X n'en fait généralement pas partie. C'est, sauf si vous réimplémentez Time Machine ou quelque chose comme ça.

+0

Ceci ne doit pas être utilisé comme une application OS X normale. Je l'utilise comme un remplacement de bureau pour une version minimale d'OS X que j'utilise comme un disque d'urgence (n'a pas de Finder ou Dock, donc j'ai besoin de faire ma propre interface). J'ai essayé de placer le niveau de fenêtre à NSDockWindowLevel mais il semble n'avoir aucun effet. – indragie

+0

Compris: Réglez le niveau de la fenêtre à -1 et maintenant il affiche ci-dessous toutes les autres fenêtres: D. – indragie