2010-07-16 6 views
0

Je suis en train de transférer un plug-in de 32 bits vers 64 bits qui est en réalité en C++. Depuis Carbon n'est plus pris en charge sur 64 bits, je dois porter du code à Cocoa. La seule aide de Cocoa dont j'ai besoin est comment créer une fenêtre modale simple (pas une feuille) qui a deux boutons, OK et Annuler, et me donne une entrée de chaîne de l'utilisateur. J'ai créé une plume de cacao, mais je n'ai aucune idée d'Objective-C. Je pourrais commencer à apprendre Objective-C dès maintenant, mais cela prend du temps et c'est le seul extrait de code dont j'ai besoin en ce moment.Boîte de dialogue simple de la fenêtre modale Cocoa sous Mac OS X

À quoi ressemblerait l'extrait de code?

+3

Si vous portez une application sur Mac OS X, l'apprentissage d'Obj-C est plus ou moins requis. Oui, il existe d'autres façons de développer une application pour Mac OS, mais Cocoa avec Obj-C est le chemin principal. Aussi, pourquoi pensez-vous que vous avez besoin d'une boîte de dialogue modale au lieu d'une feuille? Les directives d'interface humaine suggèrent généralement de ne pas utiliser les dialogues modaux. Je pense que vous cherchez un hack rapide, mais serait mieux servi en apprenant comment utiliser le système sous-jacent. –

+0

D'accord. De cette façon, la folie. –

+0

Bonjour, Je suis en train de porter un plugin qui rend les graphiques dans une application vidéo. Cette application ne prend pas en charge les feuilles de support. Je ne cherche pas un hack rapide, mais c'est plus comme je ne veux pas apprendre une nouvelle langue juste pour un appel au niveau du système. Au moins, il me faut des semaines, voire des mois, pour apprendre Obj-C à partir de zéro, ce qui dépassera la date limite. – rwb

Répondre

2

Si c'est tout ce dont vous avez besoin, vous pouvez peut-être éviter Cocoa en utilisant les API CFUserNotification à la place.

+0

Wow, je ne connaissais pas cette API du tout. Il a existé à partir de 10,0! Il y a tellement d'API ... – Yuji

+0

Hey! Génial. Cela fonctionne très bien pour mon but. Juste obtenir la chaîne d'entrée! Merci beaucoup pour ça! – rwb

2

Vous aurez besoin d'apprendre Objective-C et Cocoa indépendamment de ce que vous voulez faire, car il n'y a pas "un appel au niveau système" pour présenter un panneau modal.

Au minimum, vous devrez créer une sous-classe NSWindowController pour votre panneau, qui servira de propriétaire du fichier nib et gérer l'interaction entre ses contrôles et les données qu'il manipule. Ensuite, vous devrez passer à -[NSApplication runModalForWindow:] et gérer le résultat, ou à -[NSApplication beginModalSessionForWindow:] et gérer l'exécution et/ou l'arrêt de la session modale vous-même.

Cela signifie écrire le codage sur les frameworks Cocoa en Objective-C.

Heureusement, puisque vous commencez juste avec un message, un champ de texte et quelques boutons, ce sera assez facile. Mais il ne s'agit pas seulement d'une fonction hypothétique - Cocoa évite de telles choses en faveur d'abstractions qui peuvent être assemblées de manière simple et extensible. Par exemple, si vous décidez que vous n'avez pas seulement besoin d'une saisie de texte, mais aussi d'une case à cocher, vous devrez remplacer votre hypothétique NSGetTextInput() par quelque chose comme ci-dessus. Mais en faisant ce qui précède en premier lieu, en ajoutant cette case à cocher devient quelques secondes de travail supplémentaire. Ou ajouter une validation intéressante à votre saisie de texte. Ou pré-remplir votre entrée de texte avec des données d'un objet. Ou mettre en œuvre un délai d'attente (y compris la présentation d'un compte à rebours) sur votre boîte de dialogue modale. (Modalité est fortement défavorisée de nos jours ...) Ou l'un des nombreux autres changements.

+0

Merci pour la réponse détaillée. J'ai vraiment hâte d'apprendre le cacao en détail, et cela me donne une bonne introduction. – rwb

Questions connexes