cs_hoGan
Messages postés20Date d'inscriptionsamedi 22 mai 2004StatutMembreDernière intervention 7 décembre 2005
-
5 nov. 2005 à 19:55
cs_hoGan
Messages postés20Date d'inscriptionsamedi 22 mai 2004StatutMembreDernière intervention 7 décembre 2005
-
22 nov. 2005 à 22:05
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
A voir également:
"Php version 4.4.5" "build date" "server api" "php variables" ????
// 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.
cs_chris91
Messages postés54Date d'inscriptionjeudi 20 novembre 2003StatutMembreDernière intervention 4 avril 2007 6 nov. 2005 à 18:39
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)
cs_hoGan
Messages postés20Date d'inscriptionsamedi 22 mai 2004StatutMembreDernière intervention 7 décembre 2005 7 nov. 2005 à 20:09
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
cs_hoGan
Messages postés20Date d'inscriptionsamedi 22 mai 2004StatutMembreDernière intervention 7 décembre 2005 22 nov. 2005 à 22:05
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)