Aide - Recherche - Membres - Calendrier
Version complète : [RESOLU] Fatal error "Bad window"...
Les Forums de PalmAttitude.org > GENERAL PalmOS > Développement sous PalmOS
Fredouille.95
Mon bug du moment est le suivant:

J'utilise un formulaire vide comme formulaire principal.
Je dessine moi-meme tous les controles de ma fenêtre.

D'ailleurs, je dessine une première fois l'écran au démarrage de l'application, avant même que le formulaire principale soit créé.

Depuis que j'utilise un formulaire principal (car je m'en passait trés bien auparavant), le simulateur me génère une fatal erreur "Bad window" lorsque je tente de dessiner.

En fait, je me demande si je ne gère pas l'affichage comme un sauvage et le palm me rappelle à l'ordre.
Sur le simulateur TX, aucun problème.
Sur le simulateur PalmSource...Fatal error
Sur le TX...soft reset !!

Donc, il y a un problème.
J'avoue, je programme comme je le sens...mais là, c'est trés bizarre !!

Si ce problème vous dis quelque chose, peut-être pourrez-vous éclairer ma lanterne icon_cry.gif

Merci icon_biggrin.gif

PS: Si vous n'évez rien compris...normal, moi non plus siffle.gif
Patrice
Et tu dessines à quel stade sur ta form ? Si c'est avant le moindre FrmDrawForm() tu obtiens un comportement normal...
Fredouille.95
Comme l'initialisation de mon emulateur prends du temps, je dessine toute la fenetre, avec un splash screen d'attente, avant le premier FrmDrawForm. Et là, après le FrmDrawForm, ça plante quand je veux redessiner de la même manière.

Avant d'utiliser un formulaire principale, tout de dessinait bien !!
Patrice
Il faudrait avoir une idée plus précise de tes séquences d'appels pour établir un diagnostic.
Fredouille.95
OK, je vais essayer d'être concis...

PilotMain -> sysAppLaunchCmdNormalLaunch -> AppStart()

Dans AppStart()
je dessine toute ma fenêtre et je créé une fenêtre Offscreen pour le dessin en arrière plan de l'écran du CPC.

Si AppStart OK -> FrmGotoForm(MainForm); et AppEventLoop();

Dans AppEventLoop() je commence par exécuter mon émulateur.
S'il réclame un affichage vidéo, je copie le offscreen vers la fenêtre actuelle.

Puis, traitement des évenement du système s'il y en a.

Apparemment, le formulaire est créé avant la premier affichage de l'écran de l'émulateur.
Patrice
L'enchaînement me paraît discutable : FrmGotoForm() ne fait rien d'autre que d'ajouter un événement dans la pile (en particulier pour l'initialisation et l'affichage de la form) ; si tu fais des choses entre temps dans ta boucle d'événements, il peut y avoir des conflits...
Fredouille.95
Je suis d'accord !!
J'essais de revoir, à l'arrache, la structure de l'initialisation...Mais c'est pas facile, comme ça icon_cry.gif

J'étais parti, au départ, pour ne pas utiliser de formulaire.

Maintenant que j'en utilise un pour charger les ROMs, ben, il a bien fallu passer par un formulaire principal.

Je me demande si le fait de créé une fenêtre Offscreen avant de créer le formulaire puis de la copier vers le formulaire ne peut pas causer ce problème ???
Fredouille.95
Heureusement, j'ai corrigé ce bug...

Malheureusement, je ne sais si pourquoi, ni comment icon_cry.gif

Au suivant...

PS: Merci Patrice dieu.gif c'est quand même gràce à toi !
Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'information, la mise en page et les images, veuillez cliquer ici.
Invision Power Board © 2001-2008 Invision Power Services, Inc.