Musaran Cerveaulté | La valeur des couleurs système est dans l'octet de poids faible, contrairement à ce que j'avais dit dans mon premier post.
 Les couleurs système sont simplement marquées par le bit de poids fort à 1.
   KarLKoX
 Attention avec GetTickCount, cette horloge a un pas de 10 à 55 ms, et elle tourne même lorsque le process chronométré est préempté.
 Je crois que j'ai mieux, je cherche et je le poste.
   Tu as chronométré quoi ? L'environnement Visual Basic (interprété, favorisant le texte) est très différent de l'exécutable (compilé, favorisant les entiers).
   Note:
 Le shiftage par division par une puissance de 2 n'est malheureusement pas optimisé en vrai décalage, car Long est un type signé, et que pour un nombre négatif le décalage est différent d'une division/multiplication par 2.
     Enfin, toujours est-il que ça marche, voici mon code: Declare Function GetSysColor Lib "USER32.DLL" (ByVal nIndex As Long) As Long
   'helper
 Function AvgLong(ByVal Arg1 As Long, ByVal Arg2 As Long) As Long
    AvgLong = (Arg1 + Arg2) / 2
 End Function
   'Color handling
 Function Color_SysToRGB(ByVal SysColor As Long) As Long
    Color_SysToRGB = GetSysColor(SysColor And &H7FFFFFFF)
 End Function
   Function Color_AnyToRGB(ByVal ArgColor As Long) As Long
    If (ArgColor And &H80000000) Then ArgColor = Color_SysToRGB(ArgColor)
    Color_AnyToRGB = ArgColor
 End Function
   Function Color_BlendRGB(ByVal Arg1 As Long, ByVal Arg2 As Long) As Long
    Dim RPart As Long
    Dim GPart As Long
    Dim BPart As Long
    
    RPart = AvgLong(Arg1 And &HFF, Arg2 And &HFF)
    GPart = AvgLong(Arg1 And &HFF00, Arg2 And &HFF00)
    BPart = AvgLong(Arg1 And &HFF0000, Arg2 And &HFF0000)
    
    Color_BlendRGB = RPart Or GPart Or BPart
 End Function
   'code utilisateur
 Private Sub txt_Change()
    txt.ForeColor = IIf(Exists, _
       IIf(Grayed, vbGrayText, vbWindowText), _
       IIf(Grayed, Color_BlendRGB(vbRed, Color_SysToRGB(vbGrayText)), vbRed))
 End Sub  |  
    Message édité par Musaran le 26-06-2002 à 22:22:54  ---------------
			 Bricocheap: Montage de ventilo sur paté de mastic silicone
    |