Membres inscrits :598
Membres en ligne : 0
Invités en ligne : 3


|
| Conversation : wxGetApp().Yield() |
volfoni54 (Membre)
Lieu: Volfoni
Inscrit le : 14-09-2008
Messages: 15
Snippets: 0
Tutoriels: 0
Hors ligne |
Bonjour à tous,
Je me demande quelle est la meilleure façon d'utiliser wxProgressBar avec wxExecute :
J'appelle un programme externe qui met un certain temps à s'éxecuter et en "parallèle", je souhaite montrer la progression avec un object de type wxProgressBar.
Je suis allé voir le snippet sur wxExecute et je suis bloqué par la ligne wxGetApp.Yield().
Qui peut m'expliquer à quoi sert cette méthode et si on peut s'en passer car même en incluant le fichier qui contient "IMPLEMENT_APP", cette méthode n'est pas connue.
Merci de votre aide,
Volfoni54
| |
|
Xaviou (Administrateur)
Lieu: Annecy (74)
Inscrit le : 27-08-2007
Messages: 1147
Snippets: 23
Tutoriels: 6
Site web
Hors ligne |
Salut.
Le wxApp::Yield sert à permettre à l'application de traiter les messages en attente (rafraichissement de l'interface, ...).
Par exemple, si ton prog a un gros job à traiter, et que tu veux permettre à l'utilisateur de l'annuler (avec un bouton), il faut laisser au système le temps de prendre en compte le clic sur le bouton correspondant.
Ça permet aussi à ton application de ne pas prendre toutes les ressources du processeur. Par exemple, pour le snippet dont tu parles, voici ce qui se passe : - On lance l'exécution du programme externe - On démarre une boucle qui vérifie si il y a quelque chose sur le flux de sortie de ce programme afin de le placer dans un wxString - La boucle tourne tant que le programme tourne.
Tu imagines aisément que la boucle, sans le wxApp::Yield, va prendre plus de ressources que le programme lui-même.
Pour que wxGetApp() soit "visible", il placer la macro DECLARE_APP(appClass) après la déclaration de la classe d'application.
Sinon, si tu ne veux pas mettre cette macro, tu dois pouvoir passer par wxTheApp->Yield().
Plus d'infos ici
@+ Xav'
|
Le nouveau portail wxWidgets francophone : www.wxdev.fr Ben en fait, vous y êtes déjà...
|
secret055 (Nouveau membre)
Inscrit le : 09-08-2009
Messages: 9
Snippets: 0
Tutoriels: 0
Hors ligne |
Salut à toutes et à tous, Xaviou a écrit:Pour que wxGetApp() soit "visible", il placer la macro DECLARE_APP(appClass) après la déclaration de la classe d'application. J'ai un problème avec wxGetApp(),mon programme ne la reconnait pas.Et j'ai placé la macro DECLARE_APP(appClass)après la déclaration de la classe d'application(dans MyApp.h). Et Quand j'appelle wxGetApp()dans MainWindow.cpp il me dit qu'elle n'est pas déclarée. Merci.
Dernière modification par secret055 (20-08-2010 17:08:33)
| |
|
Xaviou (Administrateur)
Lieu: Annecy (74)
Inscrit le : 27-08-2007
Messages: 1147
Snippets: 23
Tutoriels: 6
Site web
Hors ligne |
Salut.
Tu as bien ajouté l'include du header de ta classe d'application ?
@+ Xav'
|
Le nouveau portail wxWidgets francophone : www.wxdev.fr Ben en fait, vous y êtes déjà...
|
secret055 (Nouveau membre)
Inscrit le : 09-08-2009
Messages: 9
Snippets: 0
Tutoriels: 0
Hors ligne |
Merci pour l'aide,j'ai inclus "MyApp.h" dans le MainFrame.h et ça marche bien. Un autre problème: Ce petit bout de code:
Code Cpp: #if wxUSE_LIBJPEG wxImage::AddHandler( new wxJPEGHandler ); #endif me donne l'erreur:
Code: file line message imagjpeg.cpp| |undefined reference to `jpeg_resync_to_restart'| imagjpeg.cpp| |undefined reference to `jpeg_std_error'| imagjpeg.cpp| |undefined reference to `jpeg_destroy_decompress'| imagjpeg.cpp| |undefined reference to `jpeg_CreateDecompress'| imagjpeg.cpp| |undefined reference to `jpeg_read_header'| imagjpeg.cpp| |undefined reference to `jpeg_start_decompress'| imagjpeg.cpp| |undefined reference to `jpeg_finish_decompress'| imagjpeg.cpp| |undefined reference to `jpeg_destroy_decompress'| imagjpeg.cpp| |undefined reference to `jpeg_read_scanlines'| imagjpeg.cpp| |undefined reference to `jpeg_finish_decompress'| imagjpeg.cpp| |undefined reference to `jpeg_destroy_decompress'| imagjpeg.cpp| |undefined reference to `jpeg_std_error'| imagjpeg.cpp| |undefined reference to `jpeg_destroy_compress'| imagjpeg.cpp| |undefined reference to `jpeg_CreateCompress'| imagjpeg.cpp| |undefined reference to `jpeg_set_defaults'| imagjpeg.cpp| |undefined reference to `jpeg_start_compress'| imagjpeg.cpp| |undefined reference to `jpeg_write_scanlines'| imagjpeg.cpp| |undefined reference to `jpeg_finish_compress'| imagjpeg.cpp| |undefined reference to `jpeg_destroy_compress'| imagjpeg.cpp| |undefined reference to `jpeg_set_quality'| ||=== Build finished: 20 errors, 0 warnings ===| A votre avis qu'est-ce que ça signifie ?
Dernière modification par secret055 (21-08-2010 02:54:29)
| |
|
Xaviou (Administrateur)
Lieu: Annecy (74)
Inscrit le : 27-08-2007
Messages: 1147
Snippets: 23
Tutoriels: 6
Site web
Hors ligne |
Apparemment, il te manque une lib lors de la compilation (et plus précisément lors du linkage).
Quelles sont les options wxWidgets que tu utilises ? - Ansi / Unicode - Statique / Dynamique - Multi-libs / Monolithique - Debug / Release
Edit : En fait, ça n'a pas grand importance. Je dirais juste que tu utilises les libs statiques. Il faut que tu ajoutes la lib "libwxjpeg.a" dans les options du linker (ou "wxjpeg.lib") si tu est sous Visual C++).
@+ Xav'
Dernière modification par Xaviou (21-08-2010 09:45:12)
|
Le nouveau portail wxWidgets francophone : www.wxdev.fr Ben en fait, vous y êtes déjà...
|
secret055 (Nouveau membre)
Inscrit le : 09-08-2009
Messages: 9
Snippets: 0
Tutoriels: 0
Hors ligne |
J'utilise Unicode/Statique/Multi-libs/debug et release.
| |
|
Xaviou (Administrateur)
Lieu: Annecy (74)
Inscrit le : 27-08-2007
Messages: 1147
Snippets: 23
Tutoriels: 6
Site web
Hors ligne |
Donc, il faut ajouter la lib "libwxjpeg.a" pour la configuration "Release" et "libwxjpegd.a" pour la configuration "Debug" (seulement si tes libs ont été compilées avec l'option "__WXDEBUG__" ou quelque chose dans ce genre).
Si tu utilises Visual C++, il faut remplacer les noms des libs ci-dessus par respectivement "wxjpeg.lib" et "wxjpegd.lib".
@+ Xav'
|
Le nouveau portail wxWidgets francophone : www.wxdev.fr Ben en fait, vous y êtes déjà...
|
secret055 (Nouveau membre)
Inscrit le : 09-08-2009
Messages: 9
Snippets: 0
Tutoriels: 0
Hors ligne |
Merci,c'est fait et ça marche.
| |
|
|