Accueil > Forum > > > > Faire avancer une bar de progression régulièrement: problème...
Faire avancer une bar de progression régulièrement: problème...
jeudi 14 septembre 2006 à 18:24:36 |
Faire avancer une bar de progression régulièrement: problème...

by_rabbit_08
|
Bonjour! J'ai un tout petit problème avec une progressbar... bizar non? Enfait, je voudrais qu'elle s'affiche toute seule lors de l'ouverture d'une boite de dialogue! Donc pour l'affichage pas de problème, mais j'aimerais qu'elle se remplisse simplement selon un système de for(i=0;i<100;i++) avec des Sleep de 1 seconde entre chaque avancement! Néanmoins, il n'y a un truc qui joue pas, car je ne sais si je dois la mettre dans WM_COMMAND, dans WM_CREATE, etc... Alors j'explique, j'ai commencé par la mettre dans WM_INITDIALOG, mais elle ne s'affichait pas dû aux Sleep, et s'affichait, une fois que tout était terminé, vaguement et disparaissait! J'ai alors tanté de la mettre dans WM_COMMAND; mais la je la voyais se remplir lorsque j'appuyais sur la croix pour fermer la fenêtre! J'ai alors essayé dans WM_CREATE, mais là, rien du tout! Donc comment faire pour qu'elle s'affiche automatiquement à l'ouverture de la boite de dialogue, et qu'elle n'ai pas besoin d'interaction avec l'utilisateur? Voici le petit bout de code:
BOOL APIENTRY Dialog3Proc(HWND hDlg3,UINT uMsg2,WPARAM wParam,LPARAM lParam) { static HWND progress_bar; switch (uMsg2) { case WM_INITDIALOG: SetWindowText(hDlg3,"salut"); InitCommonControls(); progress_bar = CreateWindow( PROGRESS_CLASS, (LPSTR) NULL, WS_CHILD|WS_VISIBLE, 0, 0, 385,25, hDlg3, (HMENU)ID_PROGRESS1, hinstance2, NULL); ShowWindow(progress_bar,SW_SHOWNORMAL); //SendMessage(hDlg3, WM_COMMAND, 0, 0); //while(SendMessage ( progress_bar , PBM_GETPOS , 0 , 0 )!=100)
return FALSE;
case WM_CREATE:
SendMessage( progress_bar , PBM_SETRANGE , 0 , MAKELPARAM ( 0 , 100 ) ) ; SendMessage( progress_bar , PBM_SETSTEP , MAKEWPARAM ( 1 , 0 ) , 0 ) ;
for(i=0;i<100;i++) { SendMessage(progress_bar, PBM_SETPOS, i, 0); Sleep(10); }
return TRUE;
case WM_COMMAND: EndDialog(hDlg3,0); return TRUE; break; default: return FALSE; } }
Comme vous pouvez le voir, elle est ici dans WM_CREATE... Ah oui, j'ai essayé une dernière possibilité: je l'ai placé dans WM_COMMAND; et dans WM_INITDIALOG, j'ai fais SendMessage(hDlg3, WM_COMMAND, 0, 0), mais cela a agit comme si je l'avais mis dans WM_INITDIALOG... Est-ce que quelqu'un saurait? Je suis certain, que c'est une petite faute, mais je n'arrive pas à la trouver... Merci!
|
|
jeudi 14 septembre 2006 à 18:39:57 |
Re : Faire avancer une bar de progression régulièrement: problème...

racpp
|
Salut, Une boite de dialogue ne reçoit pas de WM_CREATE. Ce message est destiné aux fenêtres. Son équivalent est donc WM_INITDIALOG.
|
|
jeudi 14 septembre 2006 à 18:45:27 |
Re : Faire avancer une bar de progression régulièrement: problème...

by_rabbit_08
|
Oui, mais comme je l'ai marqué, cela se bloque dans WM_INITDIALOG, je n'arrive pas à faire avancer la bar de progression, sais-tu pourquoi?
|
|
jeudi 14 septembre 2006 à 18:47:45 |
Re : Faire avancer une bar de progression régulièrement: problème...

racpp
|
L'avancement de la progressbar doit se faire en dehors de WM_INITDIALOG. Pour regarder ta progressbar se remplir tu peux utiliser un timer ou ajouter un bouton. Le paramètre lParam de WM_COMMAND, contient le HWND du bouton cliqué. C'est pendant le traitement de ce clic que tu mets ta boucle de remplissage.
|
|
jeudi 14 septembre 2006 à 18:52:43 |
Re : Faire avancer une bar de progression régulièrement: problème...

by_rabbit_08
|
Merci de ta réponse, mais je suis désolé, je ne comprends pas :S Dans quel partie du switch dois-je mettre la progression? et comment faire? Si c'est dans WM_COMMAND, comment faire pour que cela s'exécute, car s'il n'y a pas de bouton, le programme passe tout droit non? :O
|
|
jeudi 14 septembre 2006 à 19:10:42 |
Re : Faire avancer une bar de progression régulièrement: problème...

racpp
|
Réponse acceptée !
Si tu veux que la progressbar avance au lancement de la boite de dialogue, tu peux utiliser un timer car rien ne s'affiche tant que le traitement de WM_INITDIALOG ne retourne pas une valeur (FALSE dans ton cas). On initialise alors un timer à la fin de ce traitement en utilisant la fonction SetTimer(). On met la boucle dans le traitement du message WM_TIMER. Juste après la boucle, on détruit le timer avec KillTimer():
case WM_INITDIALOG: //...... SetTimer(hDlg3,1,1000,0); return FALSE;
case WM_TIMER: // boucle d'avancement KillTimer(hDlg3,1);
Dans cet exemple, l'avancement de la progressbar commence une seconde après l'affichage de la boite de dialogue.
|
|
jeudi 14 septembre 2006 à 19:12:43 |
Re : Faire avancer une bar de progression régulièrement: problème...

racpp
|
J'ai oublié le return FALSE; après KillTimer().
|
|
jeudi 14 septembre 2006 à 19:17:47 |
Re : Faire avancer une bar de progression régulièrement: problème...
|
jeudi 14 septembre 2006 à 22:06:06 |
Re : Faire avancer une bar de progression régulièrement: problème...

Joky
|
Comment on peut utiliser des progress bar et avoir autant de difficulté comme ça ??? Si tu prenais la peine de lire quelques ptits truc, tu poserais moins de question comme ça C'est pas que ça me gêne, mais voilà quoi, WM_COMMAND, c'est lorsque tu fais une action, je pense pas qu'il y a ai la moindre action à faire pour faire avancer ta barre selon tes explications. Lit une bonne doc !!! Met toi à la MSDN et réfléchi un tit peu ULARGE_INTEGERJokyQi=QI("Joky"
|
|
jeudi 14 septembre 2006 à 23:22:02 |
Re : Faire avancer une bar de progression régulièrement: problème...

by_rabbit_08
|
C'est bien gentil, mais je sais pas si tu as remarqué, j'ai eu besoin d'aller dans WM_TIMER pour résoudre mon problème... Donc je sais pas si MSDN m'aurait beaucoup aider pour cela...Et le reste étaient des proposition, pour pas simplement exposer mon problème et ne pas laisse tout le monde se débrouiller, avec mon simple petit soucis... Enfin désolé
|
|
Cette discussion est classée dans : progress, bar, sendmessage, wm, hdlg3
Répondre à ce message
Sujets en rapport avec ce message
pb de progress bar en visual c++ [ par glipper ]
Voila je debute en programmation visual c++ et je n'arrive pas à faire marcher une progress bar. J'arrive à la faire apparaitre dans ma boite de dialo
progress bar [ par yangan ]
Comment marche une progress bar en c++ sous visual(avec mfc)?
URGENT-vc++ [ par yangan ]
G deux petits problèmes sou vc++ et ça devient très urgent!1-comment faire un progress bar inversé cad comment faire pour qu'il avance de droite à gau
Progress Bar [ par thebigbang ]
Bonjour,Comment faire pour insérer une progress bar dans un projet VC++ ?J'ai essayé d'en déposer une sur la fenetre mais lorsque je compile, rien ne
SendMessage() & WM_KEYUP [ par Manson ]
Salut a tous,voila, j'ai un process qui tourne en multithread pour chopper les touches utiliser et j'aimerai qu'il les envoi a la fenetre principale (
status bar et progress bar (win32) [ par Elendal ]
J'ai créé une status Bar en deux parties.Dans la première partie, j'affiche du texte. Là pas de problème.Dans la deuxième par contre, je voudrais mett
Progress bar dès initialisation dialogbox [ par goutbouyo ]
Salut,J'ai crée une progrssbar dans ue boite de dialog.La barre commence à progresser quand j'appuie sur le bouton GO.Mais je voudrais qu'elle démarre
Hook clavier pendant progressbar [ par goutbouyo ]
Salut,Je voudrais mettre un hook général sur le clavier pendant une progress bar.J'ai essayé en mettant un WinExec sur un programme trouvé sur ce site
Pb débit USB / affichage progress bar [ par goondy ]
Bon, soyons concis et précis!Je veux transférer des fichiers sur mon baladeur mp3, c'est comme une clé usb.Pour copier : j'ai utilisé SHFileOperation,
magnipulation d'un progressbar [ par ngatcha ]
corinne petguet /*GetDlgItem(hdlg, IDC_PROGRESS); hProgress = CreateWindowEx(0, PROGRESS_CLASS, (LPSTR) NULL, WS_CHILD | WS_VISIBLE, 10, 10, 200, 20,
Livres en rapport
|
Derniers Blogs
JOYEUX ANNIVERSAIRE NIXJOYEUX ANNIVERSAIRE NIX par ebartsoft
Souhaitons un bon et joyeux anniversaire à notre hôte à tous, Nix.
Je ne le répéterais jamais assez mais sans lui rien ne serait possible. Il défit en permanence les lois de la gravité et comme il le dit si bien, si tu lui fais confiance ça devra...
Cliquez pour lire la suite de l'article par ebartsoft IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc REACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITERREACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITER par Groc
Une mauvaise utilisation de rx lors de l'écriture d'une couche d'accès à des services peut conduire à des cas embarassants avec des erreurs mal gérées, des appels qui ne partent lorsqu'ils le devraient, et même des résultats incorrects . le tout nuis...
Cliquez pour lire la suite de l'article par Groc
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|