BitBlt

cs_gregory6 Messages postés 22 Date d'inscription jeudi 14 octobre 2004 Statut Membre Dernière intervention 3 janvier 2005 - 14 déc. 2004 à 17:49
cs_gregory6 Messages postés 22 Date d'inscription jeudi 14 octobre 2004 Statut Membre Derniè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.

Je vous remercie pour votre aide.

Tchao.

4 réponses

cs_AlexMAN Messages postés 1536 Date d'inscription samedi 21 décembre 2002 Statut Membre Dernière intervention 24 mai 2009 1
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 ?

+2(p - n)
0
cs_gregory6 Messages postés 22 Date d'inscription jeudi 14 octobre 2004 Statut Membre Derniè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 ...
0
cs_AlexMAN Messages postés 1536 Date d'inscription samedi 21 décembre 2002 Statut Membre Dernière intervention 24 mai 2009 1
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;

Voila

++

+2(p - n)
0
cs_gregory6 Messages postés 22 Date d'inscription jeudi 14 octobre 2004 Statut Membre Derniè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.
0
Rejoignez-nous