cs_gregory6
Messages postés22Date d'inscriptionjeudi 14 octobre 2004StatutMembreDernière intervention 3 janvier 2005
-
14 déc. 2004 à 17:49
cs_gregory6
Messages postés22Date d'inscriptionjeudi 14 octobre 2004StatutMembreDernière intervention 3 janvier 2005
-
15 déc. 2004 à 07:48
Gringo
bonjour
j'ai débuté il ya qq temps sous visual C++ et les MFC. Je remercie d'ailleurs les personnes qui ont pu m'aider sur ce forum.
je crée une fenetre ds laquelle je dessine un fond et du texte. A l'appui sur une touche j'aimerai faire apparaitre un sorte de message box que je dessine. J'aimerai éviter le clignotement et conserver en arrière plan ma fenetre. Cependant, je ne dessine pas ma messagebox dans la meme fonction qui affiche ma page de dessin. En fait je ne vois pas comment faire pour conserver l'arrière plan. Pour éviter le clignotement, j'utilise bitblt.
Est il possible de superposer deux buffers mémoires.
cs_AlexMAN
Messages postés1536Date d'inscriptionsamedi 21 décembre 2002StatutMembreDernière intervention24 mai 20091 14 déc. 2004 à 20:04
Je suppose ke ta MessageBox est une dialog (ou une fenetre, on sen fout). Tu l'affiche kan tu en as besoin, je vois pas pkoi tu parle de clignotement ?
cs_gregory6
Messages postés22Date d'inscriptionjeudi 14 octobre 2004StatutMembreDernière intervention 3 janvier 2005 14 déc. 2004 à 22:50
Gringo
en fait c'est pas une boite de dialogue mais un rectangle que je dessine ds lequel je veux insérer du texte. En fait je n'utilise aucun composant active x de windows. Je dessine juste ce dont j'ai besoin, un fond, du texte, des lignes ...
cs_AlexMAN
Messages postés1536Date d'inscriptionsamedi 21 décembre 2002StatutMembreDernière intervention24 mai 20091 14 déc. 2004 à 22:59
Muè c pas top comme solution kan mm...Je te conseille de faire une dialogue, ce sera bocou plus simple.
si tu ne veux pas, tu n'as k'a créer un hdc compatible, lui 'attribuer' un bitmap, ecrire dans le hdc créé précédemment et pis un coup de BitBlt pour finir et tout copier dans le hdc de ta fenetre :
WM_PAINT:
hdc = BeginPaint(hwnd, &ps);
hdcmem = CreateCompatibleDC(hdc);
hbmp = CreateCompatibleBitmap(hdc, rct.right, rct.bottom);
holdbmp = SelectObject(hdcmem, hbmp);
//Tu dessines dans le hdc memoire
TextOut(...)
//Puis tu 'blittes' tout ca
BitBlt(hdc, 0, 0, rct.right, rct.bottom, hdcmem, 0, 0, SRCCOPY);
//Tu Detruis tout ce que t'a créé
SelectObject(hdcmem, holdbmp);
DeleteObject(hbmp);
DeleteObject(holdbmp);
DeleteDC(hdcmem);
EndPaint(hwnd, &ps);
return 0;
cs_gregory6
Messages postés22Date d'inscriptionjeudi 14 octobre 2004StatutMembreDernière intervention 3 janvier 2005 15 déc. 2004 à 07:48
Gringo
mais lorsque j'intercepte un évènement clavier par exemple, j'aimerai afficher mon rectangle et mon texte tout en conservant en arrière plan le fond de ma fenetre et le tout sans clignotement. La méthode que tu me proposes marche si je dessine qu'un message box ds le WM_PAINT si je veux en dessiner plusieurs, comment dois je procéder à ton avis ?
Par exemple l'appui sur une touche, m'affiche une nouvelle page ensuite un test sur un évènement clavier m'affiche une autre message box.
Je sais pas si j'ai été clair mais vois tu ce que je veux dire.
En tout cas, je te remercie pour ton aide. C sympa.