Deux API incompatible (SetParent & SetLayeredWindowAttributes, GetWindowsLong me

[Résolu]
Signaler
Messages postés
1098
Date d'inscription
mercredi 22 mars 2006
Statut
Membre
Dernière intervention
22 octobre 2019
-
Messages postés
1098
Date d'inscription
mercredi 22 mars 2006
Statut
Membre
Dernière intervention
22 octobre 2019
-
Bonjour,

J'utilise depuis quelque temps déjà l'API SetParent pour intégrer des forms dans des contrôles (en générale des picture box). Mais cette fois je voudrais en plus rendre le font de ma form transparente donc je pensais faire un 'truc' du genre :

Dim Attrib As Long
Dim CouleurTransparente As Long
   CouleurTransparente = Me.BackColor 'Le font est en Orange fluo
   SetParent Me.hwnd, Parent.hwnd
   Attrib = GetWindowLong(Me.hwnd, -20)
   SetWindowLong Me.hwnd, -20, Attrib Or &H80000
   SetLayeredWindowAttributes(Me.hwnd, CouleurTransparente, 0, 1)

Problème dans ce cas la fonction GetWindowsLong me retourne 0

Donc du coup je me suis dit que j'allais faire le SetParent avant la transparence

Dim Attrib As Long

Dim CouleurTransparente As Long

   CouleurTransparente = Me.BackColor 'Le font est en Orange fluo
   SetParent Me.hwnd, Parent.hwnd
   Attrib = GetWindowLong(Me.hwnd, -20) '(GWL_STYLE soit -16 me retourne une valeur mais la transparence n'est pas appliqué par le SetLayeredWindowAttributes dans ce cas )
   SetWindowLong Me.hwnd, -20, Attrib Or &H80000

   SetLayeredWindowAttributes(Me.hwnd, CouleurTransparente, 0, 1)

Dans ce cas la form enfant ne bouge plus avec le parent et des problèmes de position de la souris se pose si le coins en haut à gauche de l'objet parent n'est pas en 0,0 (ce qui n'est pour ainci dire jamais le cas)

Auriez vous une idée pour faire sa ?

PS:
Problème de position facilement identifiable grace à ce metit bout de code :
Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
    Debug.Print "X:" & X & "|" & "Y:" & Y
End Sub

HELP j'avoue que là je suis complètement coincé

 Amicalement <!-- /* Style Definitions */ p.MsoNormal, li.MsoNormal, div.MsoNormal {mso-style-pa

6 réponses

Messages postés
17288
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
27 septembre 2021
70
les fenetre translucides ne peuvent pas avoir de Parent
Messages postés
17288
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
27 septembre 2021
70
la doc est claire, là dessus "Note that WS_EX_LAYERED cannot be used for child windows."

http://msdn.microsoft.com/en-us/library/ms632599(VS.85).aspx#layered
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
80
Salut
Attention à ne pas utiliser des noms de variables/objets (comme Parent) qui pourraient ressembler à des instrcutions !
Pour les paramètres des APIs, utilise plutôt les constantes nommées qui vont bien. Elles sont plus simple à comprendre à la relecture ou ... dans un forum
Deux outils indispensables :
- "API-Guide" pour les définitions et exemples
- "APIViewer" pour retrouver les structures et constantes (et leurs valeurs)

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

<hr />Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
Messages postés
1098
Date d'inscription
mercredi 22 mars 2006
Statut
Membre
Dernière intervention
22 octobre 2019
1
jack :

Oui j'utilise en générale des constantes j'ai posté un peut vite hier (copier, coller, test, re-test, ..., re-...-re-test, post ici, rentré maison ).
Pour les variable en générale j'utilise plutôt des nom comme FormChild (ou PictureParent). Jamais hue de problèmes de compréhension jusqu'à maintenant (bien que Parent tout seul peut prêter à confusion je suis d'accord)

Renfield :
Merci de l'info je n'avais même pas relevé ce détail (qui n'en est pas vraiment un en plus )
MERCI j'ai l'imprécision que c'est grasse à toi que je résout tout mes "petit soucis"
     Renfield président, Renfield président, ...

 Amicalement <!-- /* Style Definitions */ p.MsoNormal, li.MsoNormal, div.MsoNormal {mso-style-pa
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
80
NB : Pour ce qui est des noms de variables ressemblant à des instructions : Ce n'est pas que cela perturbe la lecture, mais le compilateur n'aimera pas, il risque de perdre les pédales
Messages postés
1098
Date d'inscription
mercredi 22 mars 2006
Statut
Membre
Dernière intervention
22 octobre 2019
1
Carrément
Bà ok... Merci de l'info

 Amicalement <!-- /* Style Definitions */ p.MsoNormal, li.MsoNormal, div.MsoNormal {mso-style-pa