Accueil > Forum > > > > [api] Image qui s'efface
[api] Image qui s'efface
samedi 5 novembre 2005 à 19:55:45 |
[api] Image qui s'efface

hoGan
|
Bonjour, voilà ce que je voudrais faire: lorsque j'appuie sur un bouton, faire apparaître une image, et faire en sorte que celle-ci ne disparaisse pas dès que j'abaisse la fenêtre ! Est-ce que je me fais bien comprendre? :P Alors, je sais que l'image ne disparaît pas si on l'affiche quand on reçoit le message WM_PAINT, mais je ne vois pas comment coupler WM_PAINT et WM_COMMAND (rappelez-vous, je veux cliquer sur un bouton avant) Une recherche sur ce forum m'a indiqué ceci, un message de "BruNews" qui date de deux ans, mais c'est du charabia total ^^ : " avant creation et affichage du dialoxbox, tu copies l'image dans un memDC et c'est dedans que tu crees l'image resultante. Traite affichage de fenetre par un simple BitBlt depuis memDC vers DC de fenetre, sera hyper rapide." Qui peut traduire? Merci
|
|
dimanche 6 novembre 2005 à 00:27:13 |
Re : [api] Image qui s'efface

chris91
|
salut, traduction : c'est la technique du back buffer
quand une zone non visible est de nouveau visible, un message WM_PAINT est envoyé pour redessiner cette zone.
deux choix :
1- toutes les opérations dans WM_PAINT et si c'est long, l'affichage est pas top
2- création et dessin d'un back buffer, qui est un DC mémoire, en dehors du message WM_PAINT et WM_PAINT intégre uniquement un BitBlt du DCmem vers DC
pour l'histoire de l'image et du bouton, back buffer ou pas, c'est une variable BOOL qu'il faut, soit static dans WndProc, soit globale
static BOOL bButton;
avec WM_COMMAND : si bButton égal TRUE, bButton = FALSE sinon bButton = TRUE on met à jour l'affichage
avec WM_PAINT : si bButton égal TRUE création d'un DCmem pour copie du bmp ou BitBlt d'un DCmem éxistant vers DC si technique back buffer
pour le back buffer, un peu de code ici : http://www.cppfrance.com/forum.v2.aspx?ID=592514 et mon source : http://www.cppfrance.com/code.aspx?ID=34308 bye.
|
|
dimanche 6 novembre 2005 à 13:07:51 |
Re : [api] Image qui s'efface

hoGan
|
Salut est-ce que tu pourrais un peu détailler l'utilisation des hdc, hdcMem? Juste expliquer le principe en français, pas forcément refaire tout le code. Parce que j'ai été voir les liens indiqués et ai essayé de les adapter à ce que je voulais faire, sans résultat :::
|
|
dimanche 6 novembre 2005 à 18:39:46 |
Re : [api] Image qui s'efface

chris91
|
salut, c'est plus un problème de bmp et de bouton ça...
DC = Device Context
définition traduite de MSDN: "Un contexte de périphérique est une structure qui définit un jeu d'objets graphiques et leurs attributs associés".
si on souhaite dessiner un bmp sur la fenêtre de l'application: 1- on obtiens un handle du DC de la fenêtre de l'application 2- on obtiens un handle de DC compatible avec le DC précédent 3- on sélectionne l'objet BITMAP dans le DC compatible 4- BitBlt entre le DC compatible et le DC de la fenêtre de l'application 5- destruction de l'objet BITMAP et fermeture des DCs
dans le technique du back buffer, on commence de la même manière, sauf que l'on ne fais pas de BitBlt et on ferme uniquement le DC de la fenêtre de l'application.
donc il nous reste un DC avec un bmp sélectionné... c'est notre DCmem, notre back buffer, et il est possible d'en avoir plusieurs.
ensuite, dans WM_PAINT avec BeginPaint on obtiens un handle (hDc) du DC de la fenêtre de l'application, donc forcément compatible avec notre ou nos DCmems.
1- si l'application a une image de fond, BitBlt du hDcBackPicture vers hDc, 2- si bButton est TRUE BitBlt du hDcBmp vers hDc si hButton est FALSE, il y aura seulement un BitBlt de l'image de fond (si image de fond il y a)
chapitre 5 : The Device Context chapitre 14 : Bitmaps and Bitblts et tout le reste !! CP5 & CP5sources http://brunews.free.fr/brunews/index.htm bye.
|
|
lundi 7 novembre 2005 à 01:22:01 |
Re : [api] Image qui s'efface

chris91
|
mince, évidemment c'est "on obtient", au départ c'était "tu obtiens"...bref...
|
|
lundi 7 novembre 2005 à 20:09:49 |
Re : [api] Image qui s'efface

hoGan
|
Salut Chris, merci beaucoup de t'intéresser à mon cas Alors j'ai effectivement maintenant un problème de bouton, bien que je pense voir où tu veux en venir avec ton histoire de bool: - créer une variable globale booléenne bButton, qui servira de "marqueur" - lorsqu'on reçoit WM_COMMAND(c'est-à-dire lorsqu'on clique sur le bouton), traiter l'état de bButton (TRUE ou FALSE - c'est ici que je coince, je vais y venir plus loin) - dans le WM_PAINT, faire: if(bButton == TRUE) //le bouton est cliqué { BitBlt(hdc, 0, 0, bm.bmWidth, bm.bmHeight, hdcMem, 0, 0, MERGECOPY); } Bon, j'espère ne pas déjà me tromper jusqu'ici (dis-le moi si c'est le cas)...mais je n'arrive pas à comprendre comment traiter bButton... tu avais écrit: "avec WM_COMMAND : si bButton égal TRUE, bButton = FALSE sinon bButton = TRUE" alors si je retranscris : case WM_COMMAND: //... case ID_BOUTON: //le bouton en question if(bButton == TRUE) { bButton = FALSE; } else { bButton = TRUE; } Pour moi, ça ne rime à rien ... Merci d'éclairer ma lanterne
|
|
mardi 8 novembre 2005 à 01:39:06 |
Re : [api] Image qui s'efface

chris91
|
Réponse acceptée !
salut,
donc on change l'état de bButton à chaque WM_COMMAND, puis on met à jour l'affichage avec InvalidateRect...
case WM_COMMAND:
case ID_BOUTON: if(bButton) bButton = FALSE; // if(bButoon == TRUE) else bButton = TRUE;
// TRUE ou FALSE, on met à jour l'affichage InvalidateRect(hwnd, NULL, FALSE); // WM_PAINT dans la file des messages // break; si autre case
return 0; // pour WM_COMMAND
un BitBlt avec MERGECOPY fait un AND entre la couleur source de chaque pixel et le brush sélectionné dans le DC destination, pour une copie c'est SRCCOPY bye.
|
|
mardi 8 novembre 2005 à 19:54:36 |
Re : [api] Image qui s'efface

hoGan
|
ah yeah :) J'avais oublié de mettre à jour l'affichage avec invalidaterect, c'était ça mon problème ! Merci à toi Chris, c'est vraiment super sympa =)
|
|
mardi 22 novembre 2005 à 22:05:22 |
Re : [api] Image qui s'efface

hoGan
|
Re-bonjour :) j'ai un nouveau problème avec des disparitions d'images :^p Lorsque j'affiche l'une à la suite de l'autre des images dans une fenêtre, que j'abaisse puis remonte celle-ci, toutes les images ont disparu sauf la dernière ! J'ai utilisé la méthode d'affichage décrite plus haut (back buffer) merci
|
|
Cette discussion est classée dans : bouton, image, wm, api, efface
Répondre à ce message
Sujets en rapport avec ce message
Image sur bouton (API win32) [ par LordBob ]
Bonjour a tous,voila j'essaie de mettre une image sur un bouton de mon dialog, je procede donc comme ceci:HANDLE hImage;...hImage = LoadImage(hInst, "
Affichage d'image [ par elinep ]
Bonjour tout le monde!Voila mon probleme:Je me met a la programmation de l'API win32. J'essaye de faire un petit prog qui charge une image .bmp depuis
image dans bouton ?? [ par yohann2004 ]
Salut, Comment peut-on faire pour afficher une image sur un Bouton avec MFC ??? Merci <span style="font-weight: bold; text-decorat
image dans bouton ?? [ par yohann2004 ]
Toujours le meme probleme !! J'ai regardé l'exemple du site, les conseils que l'on m'a donné mais ca marche pas !! Voici mon code : CBitmap picture
redessiner un bouton après appui [ par tdeco ]
SalutEn fait j'ai une boite de dialogue où j'ai plusieurs boutons. Sur j'appui d'un bouton, je modifie une variable, puis j'envoie un message WM_DRAWI
Bouton + Icône ... comment ? - API Windows [ par banane_rose ]
bon bah voilà tout est dans le titre , j'ai mon image prête ( "Quit.bmp" 16x16 ) CODE COMPLET ICI je veux ajouter l'icône sur Quitter
image / bouton / MFC [ par yohann2004 ]
Bonjour, Malgrés tous les exemples je n'arrive toujours pas à afficher une image dans un bouton !! L'image est un Bitmap et je l'ai inséré dans le pro
[API | C++] Affichage pointeur BMP [ par keenrather ]
Bonjour c'est encore moi,Cette fois j'ai un problème avec l'affichage d'une image BMP dans une fenêtre. Je suis toujours en API Windows sous Visual C+
Affichage d'une image sur un bouton [ par aztcaLISS ]
Salut, je veux faire apparaître une image sur mon bouton hBtn1 que je crer sur ma fenêtre mais ça ne fonctionne pas. J'ai vu dans des examples de code
Afficher une image dans une application Win-api avec Dev-cpp [ par by_rabbit_08 ]
Bonjour! J'aurais voulu savoir si quelqu'uns pouvait m'aider pour afficher simplement une image dans une application Win-api avec Dev-cpp. Serait-il p
Livres en rapport
|
Derniers Blogs
TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3 par ROMELARD Fabrice
Speaker: Bernard Ourghanlian Cette session est comme chaque jour transmise en live par BrainSonic, et j'ai donc suivi cette troisième pleinière par ce moyen sur mon iPad . Elle est dédiée comme chaque année à la mise en perspective de l'é...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice MISHRA READER : UN LECTEUR RSS TRèS ZUNE STYLE EN OPEN SOURCE !MISHRA READER : UN LECTEUR RSS TRèS ZUNE STYLE EN OPEN SOURCE ! par Vko
Hier durant une session dédiée aux Techdays 2012, j'ai eu le plaisir d'annoncer la sortie de la Béta 2 de Mishra Reader. C'est quoi ? Pour les utilisateurs, c'est une vraie expérience de lecture de flux RSS sur Windows. Rien à voir avec les produit...
Cliquez pour lire la suite de l'article par Vko [FRAMEWORK 4] LES TASKS ET LE THREAD UI[FRAMEWORK 4] LES TASKS ET LE THREAD UI par fathi
Je viens de passer quelques temps au TechDay's et j'ai pu voir pas mal de session intéressante. Par contre une chose m'a un peu étonné lors de certaines de ces sessions qui abordaient les améliorations du framework .NET (donc le 4.5) : en gros, bea...
Cliquez pour lire la suite de l'article par fathi WORKFLOW FOUNDATION 3 A UN PIED DANS LA TOMBEWORKFLOW FOUNDATION 3 A UN PIED DANS LA TOMBE par JeremyJeanson
Depuis déjà un an, je conseille vivement les utilisateurs de Workflow Foundation 3 à migrer vers la version 4. L'information qui va suivre ne devrait donc pas trop prendre au dépourvu les personnes qui m'ont suivi. Je profite de ce poste, pour faire le re...
Cliquez pour lire la suite de l'article par JeremyJeanson TECHDAYS PARIS 2012 : NOUVELLES TENDANCES DU POSTE DE TRAVAIL - BRING YOUR OWN PCTECHDAYS PARIS 2012 : NOUVELLES TENDANCES DU POSTE DE TRAVAIL - BRING YOUR OWN PC par ROMELARD Fabrice
Speakers: Thierry Rapatout, Antoine Petit et Xavier Trebbia Cette session entre dans le cadre des RDV Décideurs des TechDays 2012, elle est liée à la consumérisation de l'IT et la mise en place du "DeskTop as a Service" dans de plus en ...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Logiciels
Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Easy-Planning (1.0.0.1)EASY-PLANNING (1.0.0.1)Basé sur les mêmes principes que MyPlanning, Easy-Planning permet de créer des plannings sous la ... Cliquez pour télécharger Easy-Planning COLLECTOR PLUS (3.00B)COLLECTOR PLUS (3.00B)COLLECTOR PLUS version 3.00B est un logiciel utilisant une base de données alimentée par :
- L... Cliquez pour télécharger COLLECTOR PLUS PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO LettresFaciles 2011 (8.0.0.1)LETTRESFACILES 2011 (8.0.0.1)LettresFaciles est un logiciel facilitant la création et la rédaction de lettres types.
Son inte... Cliquez pour télécharger LettresFaciles 2011
|