Je tente de charger une plume à partir d'un constructeur C++ avec Objective C++. J'ai recherché et trouvé assez d'exemples pour obtenir du code ensemble mais il n'affiche pas la fenêtre. Ou toutes les fenêtres d'ailleurs.Chargement de la plume et affichage de la fenêtre dans Objective C++
Voici un exemple de contructor:
JokeSystem::JokeSystem() : fileSystem("/Library/Application Support/Jokes/")
{
try
{
randSystem = new RandSelect<std::string>
(fileSystem.getAllFileContents("%\n"));
}
catch (std::ifstream::failure)
{
NSWindowController * errorWindowControl = [[NSWindowController alloc]
initWithWindowNibName:@"ErrorWindow"];
[errorWindowControl showWindow: nil];
}
}
Le but du contructor est de charger le contenu d'un répertoire dans une chaîne. Ce que j'essaie de faire est d'afficher la fenêtre d'erreur lorsque les fichiers ne parviennent pas à ouvrir.
ErrorWindow.nib a une seule fenêtre avec un bouton OK et un NSTextView
pour l'erreur, j'ai mis en place un NSWindowController
dans la plume et je l'ai connecté à la fenêtre.
Mon seul lien a été que la plupart des exemples montrent cela [errorWindowControl showWindow: self]
; plutôt que showWindow: nil
mais comme il s'agit d'un constructeur C++, il n'a pas self
et this
ne fonctionne pas.
Si cela est important, ce constructeur est appelé à partir de la méthode awakeFromNib
du MainMenu.nib
principal NSObject
.
Remerciements
J'ai testé errorWindowControl, et il n'était pas nul. Le Objective-C qui est dans le programme est un frontal pour MainMenu.nib et exécute une fonction C++ à partir de cette classe. C'est pourquoi je crée la fenêtre ici, parce que le constructeur ci-dessus est utilisé au début du programme, et cela affiche une fenêtre et quitte le programme. Le répertoire est ~/Library/Application Support mais j'ai utilisé ceci pour charger le répertoire incorrect pour vérifier ma gestion des erreurs. J'utilise un ensemble d'applications Cocoa standard dans Xcode. Merci –