Drawtext et ses secrets

Résolu
neurosupherot Messages postés 81 Date d'inscription jeudi 7 août 2003 Statut Membre Dernière intervention 7 novembre 2007 - 9 août 2005 à 22:03
violent_ken Messages postés 1812 Date d'inscription mardi 31 mai 2005 Statut Membre Dernière intervention 26 octobre 2010 - 10 août 2005 à 15:12
Bonjour, j'ai choppé une api sympa qui est drawtext, qui peur etre très utile au lieu d'un label etc



Par contre j'ai bcp de mal à m'en servir.

Je cherche Quelqu'un sur vb france capable de m'expliquer:

comment placer le texte( je n'arrive pas, ni DT_VCENTER, etc, j'ai tout essayé, le texte reste au meme endroit)

j'ai reussi a définir son pt de commencement avec RECT mais le reste
... donc si qn pourait me fournin des bonnes infos, merci bcp:D

11 réponses

violent_ken Messages postés 1812 Date d'inscription mardi 31 mai 2005 Statut Membre Dernière intervention 26 octobre 2010 2
10 août 2005 à 14:09
Violent Ken

les positions verticales ne marchent qu'avec DT_SINGLELINE
3
violent_ken Messages postés 1812 Date d'inscription mardi 31 mai 2005 Statut Membre Dernière intervention 26 octobre 2010 2
9 août 2005 à 22:07
Violent Ken

Const DC_NOTACTIVE = &H2
Const DC_ICON = &H4
Const DC_TEXT = &H8
Const BDR_SUNKENOUTER = &H2
Const BDR_RAISEDINNER = &H4
Const EDGE_ETCHED = (BDR_SUNKENOUTER Or BDR_RAISEDINNER)
Const BF_BOTTOM = &H8
Const BF_LEFT = &H1
Const BF_RIGHT = &H4
Const BF_TOP = &H2
Const BF_RECT = (BF_LEFT Or BF_TOP Or BF_RIGHT Or BF_BOTTOM)
Const DFC_BUTTON = 4
Const DFC_POPUPMENU = 5 'Only Win98/2000 !!
Const DFCS_BUTTON3STATE = &H10
Const DT_CENTER = &H1
Const DC_GRADIENT = &H20 'Only Win98/2000 !!
Private Type RECT
Left As Long
Top As Long
Right As Long
Bottom As Long
End Type
Private Declare Function DrawCaption Lib "user32" (ByVal hWnd As Long, ByVal hdc As Long, pcRect As RECT, ByVal un As Long) As Long
Private Declare Function DrawEdge Lib "user32" (ByVal hdc As Long, qrc As RECT, ByVal edge As Long, ByVal grfFlags As Long) As Long
Private Declare Function DrawFocusRect Lib "user32" (ByVal hdc As Long, lpRect As RECT) As Long
Private Declare Function DrawFrameControl Lib "user32" (ByVal hdc As Long, lpRect As RECT, ByVal un1 As Long, ByVal un2 As Long) As Long
Private Declare Function DrawText Lib "user32" Alias "DrawTextA" (ByVal hdc As Long, ByVal lpStr As String, ByVal nCount As Long, lpRect As RECT, ByVal wFormat As Long) As Long
Private Declare Function SetRect Lib "user32" (lpRect As RECT, ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long) As Long
Private Declare Function OffsetRect Lib "user32" (lpRect As RECT, ByVal x As Long, ByVal y As Long) As Long
Private Sub Form_Paint()
Dim R As RECT
'Clear the form
Me.Cls
'API uses pixels
Me.ScaleMode = vbPixels
'Set the rectangle's values
SetRect R, 0, 0, Me.ScaleWidth, 20
'Draw a caption on the form
DrawCaption Me.hWnd, Me.hdc, R, DC_ACTIVE Or DC_ICON Or DC_TEXT Or DC_GRADIENT
'Move the recatangle
OffsetRect R, 0, 22
'Draw an edge on our window
DrawEdge Me.hdc, R, EDGE_ETCHED, BF_RECT
OffsetRect R, 0, 22
'Draw a focus rectangle on our window
DrawFocusRect Me.hdc, R
OffsetRect R, 0, 22
'Draw a frame control on our window
DrawFrameControl Me.hdc, R, DFC_BUTTON, DFCS_BUTTON3STATE
OffsetRect R, 0, 22
'draw some text on our form
DrawText Me.hdc, "Hello World !", Len("Hello World !"), R, DT_CENTER
End Sub

Et voilà !
0
neurosupherot Messages postés 81 Date d'inscription jeudi 7 août 2003 Statut Membre Dernière intervention 7 novembre 2007
9 août 2005 à 22:38
et aussi des que je passe une fenetre par dessus, le texte drawtext
s'efface et réapparait seulement sous action. c'est pas une question de
autoredraw??
0
violent_ken Messages postés 1812 Date d'inscription mardi 31 mai 2005 Statut Membre Dernière intervention 26 octobre 2010 2
9 août 2005 à 23:04
Violent Ken

si
il faut rajouter me.autoredraw=true
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
neurosupherot Messages postés 81 Date d'inscription jeudi 7 août 2003 Statut Membre Dernière intervention 7 novembre 2007
10 août 2005 à 00:12
ça ne marche pas:(

J'ai fait un usercontrol et fait un drawtext mais meme si je met les valeurs de autoredraw à true ca ne marche pas :/
0
violent_ken Messages postés 1812 Date d'inscription mardi 31 mai 2005 Statut Membre Dernière intervention 26 octobre 2010 2
10 août 2005 à 09:22
Violent Ken

ba chez moi sa marche
0
neurosupherot Messages postés 81 Date d'inscription jeudi 7 août 2003 Statut Membre Dernière intervention 7 novembre 2007
10 août 2005 à 12:30
oki ct pas un me mais un usercontrol.autoredraw

mais l'idée était là merci.



Sinon, comment fait on pour rafraichir le texte, cad, effacer tout le texte, puis le renouvler par le nouveau,

car chez moi ca écris par dessus donc à la fin ça donne de la bouille

merci
0
violent_ken Messages postés 1812 Date d'inscription mardi 31 mai 2005 Statut Membre Dernière intervention 26 octobre 2010 2
10 août 2005 à 13:09
Violent Ken

tu efface ta form :

me.cls

et tu réécris ton nouveau texte:

DrawText Me.hdc, "Hello World !", Len("Hello World !"), R, DT_CENTER

de toute façon, rafraichir équivaut à effacer et réécrire dans ce cas la.
0
neurosupherot Messages postés 81 Date d'inscription jeudi 7 août 2003 Statut Membre Dernière intervention 7 novembre 2007
10 août 2005 à 13:26
merci bcp ;)

mais il reste une chose.

comment utiliser DT_VCENTER ou DT_BOTTOM( pour centrer verticalement)

car ca ne marche pas :(



alors que le reste, DT_CENTER et tout marchent.





je'ai remarqué que c'est seulement les positions verticales qui ne marchent pas
0
neurosupherot Messages postés 81 Date d'inscription jeudi 7 août 2003 Statut Membre Dernière intervention 7 novembre 2007
10 août 2005 à 14:50
ouais super :) merci

mais est ce que tu sais s'il existe une fonction permettant de connaitre la longueur d'un texte en pixels genre GetTextWidth

merci :)
0
violent_ken Messages postés 1812 Date d'inscription mardi 31 mai 2005 Statut Membre Dernière intervention 26 octobre 2010 2
10 août 2005 à 15:12
Violent Ken

désolé je ne sais pas si une telle fonction existe.
Enfin bon je suis content d'avoir pu t'aider quand meme
0
Rejoignez-nous