wxDev.fr, le portail francophone consacré à wxWidgets ! ( The french portal for wxWidgets )  
Esp. membre
Recheche rapide



Recherche avancée
Statistiques
Membres inscrits :2359

Membres en ligne : 0
Invités en ligne : 2

Valid XHTML 1.0 Transitional

Valid CSS2

Menu Snippets (navigation):
Pages: 1    Accueil » Snippets » Système
» Quitter votre application.
Détails du snippet : Quitter votre application.
Informations sur l'auteur de ce snippet :


Hors ligne
antoine163 (Membre)
Inscrit le : 09-07-2010
Messages: 10
Snippets: 1
Tutoriels: 0
Introduction / Description :
Comme dans presque tout programme wxwidgets qui se respecte, la plupart du temps, il suffira d'appeler par exemple la méthode Close() de votre wxFrame, pour quitter l'application.

Ici, je vous présente une méthode globale pour quitter votre application, même si vous ne disposez pas de wxFrame dans votre programme ou que vous n'y avez pas accès ou pour d'autres raisons ...
Contenu du snippet :
Vous devez avoir un programme composé d'une wxApp qu'habituellement on dérive ...

On va tous simplement ajouter une méthode à notre dérivée de wxApp que l'on va appeler OnQuit par exemple.
Cette méthode va nous permettre de quitter la boucle principale en appelant ExitMainLoop() de la classe wxApp.

Il va falloir, aussi, lier la méthode OnQuit à un type d'événement.
Ici j'ai utilisé Bind, mais peux être que sa fonctionne aussi avec Connect ...
Remarquez que j'ai utilisé l'id wxID_EXIT mais libre à vous d'utiliser l'id que vous voulez.
Remarquez également que j'ai utilisé le type d'événement wxEVT_COMMAND_MENU_SELECTED qui correspond au clic d'un item dans un menu.
Là aussi libre à vous d'utiliser l'événement qui vous convient.

Code Cpp:

class App : public wxApp
{
    public:
        bool OnInit()
        {
            //Lien entre l’événement wxEVT_COMMAND_MENU_SELECTED/wxID_EXIT et la méthode OnQuit
            Bind(wxEVT_COMMAND_MENU_SELECTED, &App::OnQuit, this, wxID_EXIT);
 
            //...
        }
        int OnExit()
        {
            //...
        }
 
        void OnQuit(wxCommandEvent&)
        {
            //On quitte la boucle principale, ce qui va avoir pour effet d'appeler aussi OnExit()
            ExitMainLoop();
        }
 
    private:
    //...
};


Il reste une dernière chose. Il nous faut générer l'événement pour produire l'exécution de OnQuit.
Par exemple, dans une classe héritée de la classe wxEvtHandler il vous suiffe d'appeler la méthode QueueEvent.

Code Cpp:

wxCommandEvent *event = new wxCommandEvent(wxEVT_COMMAND_MENU_SELECTED, wxID_EXIT);
QueueEvent(event);
Explications finales :
Vous voilà maintenant armés pour quitter vos applications.

En réalité on peut utiliser le même principe d'événement pour exécuter une méthode à partir de presque n'importe quelle emplacement dans le code. Histoire d'être un peu plus général, la création d'un nouveau type d'événement est peut-être plus propre, ce que j'aurai pu faire dans l'exemple ci-dessus.
Commentaires

Il n'y a pas encore de commentaire pour ce snippet.
Menu Snippets (navigation):
Pages: 1    Accueil » Snippets » Système
» Quitter votre application.