Silmon
Messages postés85Date d'inscriptionmardi 6 janvier 2004StatutMembreDernière intervention 7 mai 2007
-
5 avril 2006 à 15:04
Silmon
Messages postés85Date d'inscriptionmardi 6 janvier 2004StatutMembreDernière intervention 7 mai 2007
-
12 avril 2006 à 14:12
Je cherche le moyen de dessiner un focus (avec ou sans DrawFocusRect) dans un control, par exemple un bouton, une FlexGrid.
Schlangan
Messages postés47Date d'inscriptionsamedi 21 août 2004StatutMembreDernière intervention11 décembre 2007 5 avril 2006 à 15:14
Une petite correction :
Ce n'est pas DrawFocusRect(GetDC(Command1.hwnd), cadre), mais :
DrawFocusRect GetDC(Command1.hwnd), cadre
C'est parce que je n'ai pas placé de variables pour recevoir la donnée indiquant si la fonction a réussi ou non. Et de ce fait, je ne dois pas mettre de parenthèses.
Schlangan
Messages postés47Date d'inscriptionsamedi 21 août 2004StatutMembreDernière intervention11 décembre 2007 5 avril 2006 à 15:12
Bonjour, Silmon.
Pour un bouton de commande, c'est assez simple, il suffit de lui donner le focus.
Par Exemple : Command1.SetFocus
Sinon, il faut obtenir le 'hDC' de ton contrôle pour utiliser DrawFocusRect.
Si ton contrôle a une propriété hWnd, utilises la fonction API GetDC, pour obtenir le hDC, et sers-toi de cet identificateur dans DrawFocusRect.
Exemple :
Dim cadre As RECT
With cadre
.Left = 5
.Top = 5
.Right = Command1.Width - 5
.Bottom = Command1.Height - 5
End With
DrawFocusRect(GetDC(Command1.hwnd), cadre)
Il faut bien sûr déclarer les deux fonction API et le type RECT.
Note : Ce code est pour Visual Basic 6.0
Schlangan
Messages postés47Date d'inscriptionsamedi 21 août 2004StatutMembreDernière intervention11 décembre 2007 6 avril 2006 à 15:14
Heu... J'ai peut être unse solution, un peu tordue...
Aparemment les contrôles comme les CommandButton possèdent un rafraîchissement automatique après qu'ils aient été masqués. Dans ce cas, essaie de faire passer un autre contrôle au-dessus du contrôle où tu as tracé le focus, et peut être qu'une fois que le contrôle qui était au-dessus ait été enlevé, le rafraîchissement aura été effectué.
Mais, rien n'est sûr du tout, mais comme je dis toujours, qui ne tente rien n'a rien !
Vous n’avez pas trouvé la réponse que vous recherchez ?