IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Discussion :

[API win32] fermer correctement la fenêtre en cas d'erreur imprévue


Sujet :

Windows

  1. #1
    Membre extrêmement actif Avatar de nikau6
    Homme Profil pro
    Inscrit en
    Février 2008
    Messages
    406
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Etats-Unis

    Informations forums :
    Inscription : Février 2008
    Messages : 406
    Points : 737
    Points
    737
    Par défaut [API win32] fermer correctement la fenêtre en cas d'erreur imprévue
    Bonjours,

    Voila ma question.Je programme actuellement un moteur de jeux 2D, et j'ai un petit problème avec win32.

    Par exemple, au démarrage de mon prog, il est possible de changer la résolution de l'écran, et celle ci redevient comme avant lorsque le prog est fermé normalement.Mais si une erreur survient pendant l'exécution, j'ai alors une boite de dialogue m'indiquant qu'une erreur c'est produite, je suis obligé de fermé l'application et je ne récupérer pas les anciens paramètres d'affichage.

    Je tiens à préciser que la boite de dialogue en question est une boite de dialogue du système, pas une que j'ai crée.

    Comment demander à window, en cas de fermeture non prévu d'exécuter ma fonction, permettant de replacer les paramètres d'affichages comme avant?

    Merci d'avance pour vos réponses

  2. #2
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Pour ça, je conseillerais d'utiliser du SEH (structured exception handling), pour faire ta restauration même si le jeu plante.

    Et aussi, faire un programme correctement structuré (pas d'appel à exit() ou à ExitProcess()).
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  3. #3
    Membre extrêmement actif Avatar de nikau6
    Homme Profil pro
    Inscrit en
    Février 2008
    Messages
    406
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Etats-Unis

    Informations forums :
    Inscription : Février 2008
    Messages : 406
    Points : 737
    Points
    737
    Par défaut
    Je n'utilise aucun appels à exit(), lorsque l'erreur est prévus et qu'une boite de dialogue m'en informe, et que la fenêtre doit fermer, j'utilise DestroyWindow(HWND), et je place ma fonction qui permet de remettre l'affichage tel qui l'était dans WM_DESTROY.Est-ce la bonne facon?

    Sinon pour les erreurs imprévus, qu'est-ce que du SEH?Et comment l'utiliser?

    Merci

  4. #4
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Pour moi, la bonne façon serait plutôt après ta boucle de messages (qui se termine une fois que ta fenêtre a fait un PostQuitMessage()).

    Pour le SEH, si tu utilises Visual, cherches ça sur MSDN; un bloc __try/__finally devrait convenir.
    Par contre, si tu es sous MinGW, je n'en ai aucune idée...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  5. #5
    Membre extrêmement actif Avatar de nikau6
    Homme Profil pro
    Inscrit en
    Février 2008
    Messages
    406
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Etats-Unis

    Informations forums :
    Inscription : Février 2008
    Messages : 406
    Points : 737
    Points
    737
    Par défaut
    OK, merci.Je vais faire des recherche à propos de SEH

Discussions similaires

  1. modifier le thème d'une fenêtre avec l'API win32
    Par d'Oursse dans le forum Windows
    Réponses: 9
    Dernier message: 19/02/2012, 16h03
  2. [API WIN32] Fond de fenêtre transparent
    Par Fabllot dans le forum Windows
    Réponses: 2
    Dernier message: 27/07/2007, 11h45
  3. API Win32 problème de fermeture de fenêtre
    Par Ano dans le forum Windows
    Réponses: 3
    Dernier message: 13/12/2006, 21h37
  4. Réponses: 2
    Dernier message: 13/09/2006, 10h22
  5. [MDI] comment fermer la bonne fenêtre enfant ?
    Par KThrax dans le forum Langage
    Réponses: 5
    Dernier message: 01/09/2002, 09h42

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo