yannou24
Messages postés27Date d'inscriptionlundi 12 septembre 2005StatutMembreDernière intervention 1 février 2006
-
25 sept. 2005 à 01:36
PCPT
Messages postés13280Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 2018
-
25 sept. 2005 à 14:05
Bonjour à tous !
Voila mon pb :
Sur une form, j'ai une picturebox (avec une image, cela va de soi...) mais je voudrais que tout le formulaire soit entièrement caché par un voile noir. La dessus, je voudrais pouvoir créer un curseur de souris de forme ronde qui permettrait de lever le voile noir à l'endroit ou il se trouve. Autrement dit, le curseur pourrait correspondre à un disque de rayon 1cm par exemple et permettrait de voir la partie de la picturebox qui se trouve sous le voile noir. on deplace la souris et on peut ainsi voir ce qui se trouve derriere le voile noir... Voila j'espère que je me suis bien fait comprendre, je sais que c'est pas évident !!!!!!
Je sèche dessus depuis 3 jours, sans dormir ni manger (ou presque) et je suis limite désepéré. J'appelle au secours si quelqu'un pense que c'est possible.
PCPT
Messages postés13280Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 201848 25 sept. 2005 à 14:05
re,
voici l'idée :
Const LWA_COLORKEY = &H1
Const LWA_ALPHA = &H2
Const GWL_EXSTYLE = (-20)
Const WS_EX_LAYERED = &H80000
Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" _
(ByVal hWnd As Long, ByVal nIndex As Long) As Long
Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" _
(ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Private Declare Function SetLayeredWindowAttributes Lib "user32" _
(ByVal hWnd As Long, ByVal crKey As Long, ByVal bAlpha As Byte, _
ByVal dwFlags As Long) As Long
'
Const MaCouleur As Long = 654654
'
'
Private Sub Form_Load()
Dim Ret As Long
ScaleMode = 3
Ret = GetWindowLong(Me.hWnd, GWL_EXSTYLE)
Ret = Ret Or WS_EX_LAYERED
SetWindowLong Me.hWnd, GWL_EXSTYLE, Ret
SetLayeredWindowAttributes Me.hWnd, MaCouleur, 128, LWA_COLORKEY
End Sub
'
'
Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button = 1 Then
Circle (X, Y), 30, MaCouleur
End If
End Sub
PCPT
Messages postés13280Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 201848 25 sept. 2005 à 12:35
salut,
sous VB6 (?), si la solution voulue peut ne fonctionner que sous XP, je te propose ceci :
place une Form devant celle dont tu parles.
au mousemove, peind la Form (brosse) d'une couleur que tu rends invisible (SetLayer...)
çà me parraît être une solution ;)
ne fonctionne que sous W2K+
yannou24
Messages postés27Date d'inscriptionlundi 12 septembre 2005StatutMembreDernière intervention 1 février 2006 25 sept. 2005 à 12:55
merci pour ta reponse pcpt !
peux tu m'en dire un petit peu plus. Je ne maitrise pas bien ta solution; comment faire pour ne changer en couleur invisible qu'un petite partie de mon formulaire c'est à dire celle qui se trouve dans un rayon déterminée autour du pointeur de la souris ? Parce que j'aimerais qu'en déplacant la souris, ce qui a été découvert se recouvre tout de suite....