Texte veticalement mais !

hindhinf Messages postés 50 Date d'inscription dimanche 9 mai 2004 Statut Membre Dernière intervention 27 juillet 2007 - 27 mai 2004 à 16:23
cs_starfighter Messages postés 90 Date d'inscription mardi 18 mars 2003 Statut Membre Dernière intervention 28 février 2005 - 27 mai 2004 à 16:39
j'ai essayer le code suivant pour ecrire un texte verticalement :

Private Declare Function GetDeviceCaps Lib "GDI32" (ByVal hdc As Long, ByVal nIndex As Long) As Long
Private Declare Function CreateFont Lib "GDI32" Alias "CreateFontA" (ByVal H As Long, ByVal w As Long, ByVal E As Long, ByVal O As Long, ByVal w As Long, ByVal i As Long, ByVal U As Long, ByVal S As Long, ByVal C As Long, ByVal OP As Long, ByVal CP As Long, ByVal Q As Long, ByVal PAF As Long, ByVal F As String) As Long
Private Declare Function DeleteObject Lib "GDI32" (ByVal hObject As Long) As Long
Private Declare Function TextOut Lib "GDI32" Alias "TextOutA" (ByVal hdc As Long, ByVal x As Integer, ByVal y As Long, ByVal lpString As String, ByVal nCount As Long) As Long
Private Declare Function SetMapMode Lib "GDI32" (ByVal hdc As Long, ByVal nMapMode As Long) As Long
Private Declare Function SelectObject Lib "GDI32" (ByVal hdc As Long, ByVal hObject As Long) As Long
Private Const MM_LOMETRIC = 2 ' 1/10 mm
Private Const LOGPIXELSY = 90
Dim HFont As Long, HFontOld As Long, MapModePrevious As Long

Private Sub Command1_Click()
Dim Retour As Long, Hauteur As Long
Dim Texte As String, Police As String
Dim Haut_Bas As Long, Gauche_Droite As Long, Taille As Long
Dim Italic As Long, Gras As Long, Souligné As Long, Barré As Long, Angle As Long

Texte = "Bonjour" ' le texte à écrire
Police = "Arial" ' police à utiliser
Haut_Bas = 30 ' départ du texte à 30 mm du sommet de la PictureBox
Gauche_Droite = 5 ' départ du texte à 5 mm de la gauche de la PictureBox
Taille = 12 ' taille de la police
Italic = 0 'texte en italique : 1 ; sinon, 0
Gras = 400 ' de 100 à 900 par pas de 100
Souligné = 0 ' texte souligné : 1 ; sinon, 0
Barré = 0 ' texte barré : 1 ; sinon, 0
Angle = -900 'rotation du texte de 90,0 degrés en sens inverse des aiguilles d'une montre
' sinon, par exemple 600 = rotation du texte de 60,0 degrés dans le sens des aiguilles d'une montre

Hauteur = (-Taille * GetDeviceCaps(Me.hdc, LOGPIXELSY)) / 36
Retour = TexteIncliné(Texte, Haut_Bas, Gauche_Droite, Police, Hauteur, Italic, Gras, Souligné, Barré, Angle)
End Sub

Function TexteIncliné(Text, CentrageV, CentrageH, Nom_Fonte, Taille_Fonte, Ital, Corps, UnderL, Strik, Angle) As Long
Dim RetourFonction As Long
MapModePrevious = SetMapMode(Me.hdc, MM_LOMETRIC)
HFont = CreateFont(Taille_Fonte, 0&, Angle, Angle, Corps, Ital, UnderL, Strik, 0&, 0&, 0&, 0&, 0&, Nom_Fonte)
HFontOld = SelectObject(Me.hdc, HFont)
RetourFonction = TextOut(Me.hdc, 10 * CentrageH, -10 * CentrageV, Text, Len(Text))
RetourFonction = SetMapMode(Me.hdc, MapModePrevious)
RetourFonction = SelectObject(Me.hdc, HFontOld)
RetourFonction = DeleteObject(HFont)
End Function

le problème c'est que le message ne s'affiche que si je deplace le formulaire à l'extrimité de l'ecran et que je le place à nouveau dans la position intiale ,
je ne sais pas ou est le problème
est ce quelqu'un peut m'aider ?
merci d'avance

1 réponse

cs_starfighter Messages postés 90 Date d'inscription mardi 18 mars 2003 Statut Membre Dernière intervention 28 février 2005
27 mai 2004 à 16:39
rajoute Refresh a la fin de Command1_Click()
Soit Refresh ou Text.Refresh
0
Rejoignez-nous