Je viens de réessayer ton premier code et je me suis aperçu qu'en changeant la couleur de transparence à:
FF00FF
cela fonctionnait!
Il y a d'autre couleur de transparence qui pose problème comme le blanc!
Sinon, pour le 2ème code, celui ci fonctionne chez moi:
Code : Tout sélectionner
; Auteur : Le Soldat Inconnu
; Version de PB : 4.50
ProcedureDLL SetLayeredWindow(WindowID) ; Mettre l'attribut WS_EX_LAYERED à la fenêtre
SetWindowLong_(WindowID, #GWL_EXSTYLE, GetWindowLong_(WindowID, #GWL_EXSTYLE) | #WS_EX_LAYERED) ; Mettre l'attribut WS_EX_LAYERED à la fenêtre
EndProcedure
ProcedureDLL SetLayeredWindowAttributes(WindowID.l, Alpha.l, Color.l) ; Transparence et forme de la fenêtre
Protected Parametre.l
If Alpha > 0
Parametre | #LWA_ALPHA
Else
Alpha = 255
EndIf
If Color > 0
Parametre | #LWA_COLORKEY
Else
Color = 0
EndIf
SetLayeredWindowAttributes_(WindowID, Color, Alpha, Parametre)
EndProcedure
Procedure WinCallback(hWnd, uMsg, wParam, lParam)
; Nous pouvons tester dans la callback les paramètres renseignés automatiquement par windows
If uMsg = #WM_NCHITTEST
Debug "popo"
ProcedureReturn #HTTRANSPARENT
EndIf
ProcedureReturn #PB_ProcessPureBasicEvents
EndProcedure
; Auteur : Le Soldat Inconnu
; Version de PB : 4.50
If OpenWindow(0, 0, 0, 800, 600, "Groupe Exploreur", #PB_Window_SystemMenu | #PB_Window_ScreenCentered | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget | #PB_Window_SizeGadget) = 0
End
EndIf
SetLayeredWindow(WindowID(0))
SetLayeredWindowAttributes(WindowID(0), -1, $FF00FF)
RunProgram("explorer.exe", "C:\", "")
Delay(5000)
id = GetForegroundWindow_()
SetParent_(id, WindowID(0))
Style = GetWindowLongPtr_(id, #GWL_STYLE)
SetWindowLongPtr_(id, #GWL_STYLE, (Style | #WS_CHILDWINDOW) & ~#WS_TILEDWINDOW)
If CreateImage(1, 300, 300, 32)
If StartDrawing(ImageOutput(1))
Box(0, 0, 300, 300, $FF00FF)
StopDrawing()
EndIf
EndIf
ImageGadget(1, 0, 0, 300, 300, ImageID(1))
SetWindowPos_(GadgetID(1),id,0,0,0,0,3)
Repeat
Event = WaitWindowEvent()
Select Event
Case #PB_Event_Menu
Select EventMenu() ; Menus
EndSelect
Case #PB_Event_Gadget
Select EventGadget() ; Gadgets
EndSelect
Case #PB_Event_SizeWindow
SetWindowPos_(id, GadgetID(1), 0, 0, WindowWidth(0), WindowHeight(0), 0)
EndSelect
Until Event = #PB_Event_CloseWindow
Dis moi si ça résoud ton problème?