Reinitialiser l'ecran

fredsor Messages postés 198 Date d'inscription lundi 24 avril 2006 Statut Membre Dernière intervention 3 avril 2008 - 9 juil. 2007 à 15:53
fredsor Messages postés 198 Date d'inscription lundi 24 avril 2006 Statut Membre Dernière intervention 3 avril 2008 - 10 juil. 2007 à 11:49
Bonjour a tous,
J'ai cherché sur le forum, sans succès ( beaucoup de solutions sont proposées pour application console, ce qui n'est pas mon cas)
Je programme en Win32 une appli pour Pocket PC. J'affiche un premier ecran avec différents controles (bouton, editbox,static ou lisbox) . Mais je voudrais que lorsque je clique sur un bouton, cela laisse mon appli ouverte, mais efface tous les controles, pour ensuite en recreer de nouveaux sur un ecran "vierge" ( et ainsi de suite, l'appli devant géré un certain nombre d'nchainement d'ecran...)

Je ne vois pas trop comment procéder, comme j'ai créé mes controle dans le WM_CREATE, où devrais-je ensuite créer les nouveaux? et comment effacer l'ecran actuel? ( pour l'instant j'ai tester en faisant des DestroyWindow, pas terrible ^^ ).

Voila, merci d'avance
Si je ne suis pas clair n'hesitez pas

6 réponses

cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 13
10 juil. 2007 à 09:54
Salut,

Tu peux peut être jouer avec ShowWindow, qui prend peut prendre SW_HIDE et SW_SHOW en paramètre.

Y a CloseWindow aussi.

Mais je ne sait pas si ces deux fonctions marchent avec des contrôles.

                
0
fredsor Messages postés 198 Date d'inscription lundi 24 avril 2006 Statut Membre Dernière intervention 3 avril 2008
10 juil. 2007 à 10:08
Salut,
Merci pour ta réponse.
Je ne pense pas que ce soit ce qu'il me faut : closeWindow n'est pas reconnu ( pas mal de fonctions ne sont pas reconnue par Windows CE), quant à  showWindow est reconnu mais ne fait pas ce que je voudrais il me semble.

En fait, moi je voudrais qu'en fonction d'une action, cela me "vide" mon ecran, mais me laisse la fentre principal active, et qu'ensuite je puisse ajouter par exemple un bouton en plein milieu de cet ecran maintenant blanc...

Merci d'avance pour ceux qui auraient une idée...
0
cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 13
10 juil. 2007 à 10:56
Bah je viens d'essayer ShowWindow sous XP : on peut effacer un bouton de la form.

Il suffit de passer le handle de fenêtre du bouton en question.

Si tu veux effacer plusieurs contrôles en même temp, ça devrait pouvoir se faire en les mettants dans une fenêtre de classe STATIC, et en donnant le handle de cette fenêtre à ShowWindow.
0
fredsor Messages postés 198 Date d'inscription lundi 24 avril 2006 Statut Membre Dernière intervention 3 avril 2008
10 juil. 2007 à 11:04
Oki pas bete ^^
Comment tu les mets tous dans une fenetre static? ( je les ajoute tous dans ma fentre principale créée avec CreteWindow() )
Et comment ensuite recreer un nouveau controle, puisque pour le premier ecran je l'ai fait dans le WM_CREATE.
Merci je reteste !
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 13
10 juil. 2007 à 11:24
Pour placer dans un STATIC, il doit suffire de mettre le handle du STATIC dans le hWndParent du CreateWindow des différents contrôles d'une même page.

Donc dans ton WM_CREATE, tu peux :
1 Créer tous tes STATIC, un par page, et tu récupères leur handle dans un tableau.
2 Cacher tous tes STATIC, sauf celui de la première page, avec ShowWindow.
3 Créer tous tes contrôles dans le bon STATIC en leur affectant hWndParent.

Une alternative au STATIC pour se débarrasser des contrôles d'une form, c'est d'utiliser GetWindow.

Ca doit ressembler à ça :

HWND hwnd;

hwnd = GetWindow(HandleForm, GW_CHILD);
while (hwnd != NULL)
{
    ShowWindow(hwnd, SW_HIDE);
    hwnd = GetWindow(hwnd, GW_HWNDNEXT);
}

Mais bon, après la partie chiante, c'est de se souvenir des handle des différents contrôles de chaque pages pour les réafficher avec ShowWindow.
0
fredsor Messages postés 198 Date d'inscription lundi 24 avril 2006 Statut Membre Dernière intervention 3 avril 2008
10 juil. 2007 à 11:49
Ok merci pour tes conseils je vais essayé tout ca
En fait avant mon WM_CREATE je parse un fichier contenant les infos me disant quels controles créer, et ensuite je remplissait des tableaux contenant ces informations, et lisait ces tableaux pour créer les composants
Donc la j'ai essayé, lors du clique sur un bouton, de faire un DestroyWindow() pour chaque composants, puis je reinitialise les tableaux
Enfin, je relance un noueau parsing sur un autre fichier, et appelle à nouveau le WM_CREATE avec un SendMessage .

Ca ma l'air pas mal pour l'instant, je verrais si ca plante plus loin! ^^

Encore merci pour ton aide, je regarde tout de meme les static ( le souci c'est que je ne connais pas a l'avance le contenu de mes ecrans : je recois le premier fichier via une requete http, jenvoi une reponse et recois un nouveau fichier etc...)
0
Rejoignez-nous