Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1127 connectés 

  FORUM HardWare.fr
  Programmation

  C/C++ windows: DC et DrawTextEx

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

C/C++ windows: DC et DrawTextEx

n°81344
LetoII
Le dormeur doit se réveiller
Posté le 13-12-2001 à 18:07:18  profilanswer
 

Question 1:
Qqn peut il m'expliquer simplement comment on modifie la font d'un DC?
 
Question 2:  
Y a t il un moyen de faire en sorte que le fond du texte soit transparant (qu'il ne recouvre pas ce qui est déjà écrit sous le text)?

mood
Publicité
Posté le 13-12-2001 à 18:07:18  profilanswer
 

n°81355
youdontcar​e
Posté le 13-12-2001 à 18:31:39  profilanswer
 

* CreateFont(), puis le sélectionner dans le dc
 
* SetBkMode(TRANSPARENT);

n°81356
LetoII
Le dormeur doit se réveiller
Posté le 13-12-2001 à 18:32:35  profilanswer
 

youdontcare a écrit a écrit :

* CreateFont(), puis le sélectionner dans le dc
 
* SetBkMode(TRANSPARENT);  




 
j'ai essayé avec create font, mais j'ai du faire une connerie, ça a rien changé

n°81358
youdontcar​e
Posté le 13-12-2001 à 18:34:55  profilanswer
 

LetoII a écrit a écrit :

j'ai essayé avec create font, mais j'ai du faire une connerie, ça a rien changé  



montre ton code ...

n°81362
LetoII
Le dormeur doit se réveiller
Posté le 13-12-2001 à 18:40:07  profilanswer
 

Dés que je l'aurais réécrit :)

n°81367
LetoII
Le dormeur doit se réveiller
Posté le 13-12-2001 à 19:05:22  profilanswer
 

Bon une autre question:
 
déjà voici le code, ça va simplifier:
static RECT inRect;
 
HDC test=GetDC(Handle);
SetBkMode(test,TRANSPARENT);
refreshN=true;
 
InvalidateRect(Handle,&inRect,true);
inRect.left=X;
inRect.top=Y;
inRect.right=Width-X;
inRect.bottom=Y+DrawTextEx(test,pText,-1,&inRect,DT_CALCRECT | DT_TOP | DT_LEFT,0);
DrawTextEx(test,pText,-1,&inRect,DT_TOP | DT_LEFT,NULL);
ValidateRect(Handle,&inRect);
                   
ReleaseDC(Handle,test);
 
bon alors ça marche pas trop mal sauf que comme le text s'affiche en transparence là où j'ai la souris il en reste tjrs un bout non effacé (en fait plus qu'un bout) quand je bouge la souris (le petit bout de code est appeléchaque fois qu'elle change de position). Alors question comment je fais pour permetre l'effacement de tout le text. Si j'enlève le validate le text ne s'affiche plus.

n°81392
youdontcar​e
Posté le 13-12-2001 à 20:20:42  profilanswer
 

tout le code est dans la même fonction ? elle est où ta fonction d'ailleurs ... c'est un onPaint() ? parce que là je comprends pas trop, si tu veux afficher qq chose, c'est soit
 
* en réponse à WM_PAINT où tu utilises alors BeginPaint() et EndPaint() pour chopper un dc et valider la surface
 
* périodiquement, ie 30 fois par secondes, tu peux faire un GetDC() sur ta fenêtre et painter directement. ça va flicker, il faut donc painter dans un dc mémoire (CreateCompatibleDC() et CreateCompatibleBitmap() - je crois) et blitter la surface à coups de BitBlt().

n°81406
LetoII
Le dormeur doit se réveiller
Posté le 13-12-2001 à 20:58:31  profilanswer
 

non elle répond pas à un événement onpaint( je pense que c de là que vient le plus gros du PB) elle se trouve dans un événement qui gère le drag and drop

n°81410
youdontcar​e
Posté le 13-12-2001 à 21:33:22  profilanswer
 

d'accord ... parce que le code que tu files est un peu bizarre : InvalidateRect() va envoyer un WM_PAINT, donc ton code avec TextOut() va être éxécuté, puis le code de onPaint().  
 
donc ... si tu veux effacer le texte, il va falloir le faire à la main. il faut gicler le invalidate(), et le validate() aussi (pas sûr). normalement tu devrais juste pouvoir faire GetDC(), FillRect() (pour effacer le fond), puis ton TextOut().
 
enfin, le mieux je pense serait juste d'appeler InvalidateRect() dans ta fonction, et de faire réagir le onPaint() de façon appropriée : suivant un flag dans ton code, il appelle telle ou telle fonction et lui passe le hdc pour dessiner.

n°81415
LetoII
Le dormeur doit se réveiller
Posté le 13-12-2001 à 21:46:01  profilanswer
 

Je suis assez daccord avec ton dernier paragraph, je vais faire ça on va voir si ça marche mieu


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation

  C/C++ windows: DC et DrawTextEx

 

Sujets relatifs
C/C++ API Windows: Version d'un exécutablec++ sous windows : afficher un point
[COBOL] Recherche un compilateur /editeur sous windows + coursArret d'un programme sous Windows NT
windows xp planteCherches cours de c sous windows
cherche compilo C qui soit le meme sous linux et windows[tout langage] programmer un reboot automatique de Windows
DDEML.DLL ... windows la bloque !Des menus qui se déploie, genre Windows ?
Plus de sujets relatifs à : C/C++ windows: DC et DrawTextEx


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR