un petit délire
ce code fait des trous dans la fenêtre au passage de la souris
Code : Tout sélectionner
; Auteur : Le Soldat Inconnu
; Version de PB : 4
;
; Explication du programme :
; Pour faire des programmes de test rapidement, il ne reste qu'a rajouter les gadgets et la gestion des évènements.
ProcedureDLL SetLayeredWindow2(WindowID.l, Alpha.l, Color.l) ; Transparence et forme de la fenêtre
Protected Parametre.l
SetWindowLong_(WindowID, #GWL_EXSTYLE, GetWindowLong_(WindowID, #GWL_EXSTYLE) | #WS_EX_LAYERED)
If Alpha > 0
Parametre | #LWA_ALPHA
Else
Alpha = 0
EndIf
If Color > 0
Parametre | #LWA_COLORKEY
Else
Color = 0
EndIf
SetLayeredWindowAttributes_(WindowID, Color, Alpha, Parametre)
EndProcedure
; Création de la fenêtre et de la GadgetList
If OpenWindow(0, 0, 0, 300, 300, "Test", #PB_Window_SystemMenu | #PB_Window_ScreenCentered | #PB_Window_MinimizeGadget) = 0
End
EndIf
; La couleur $FF00FF devient totalement transparente
; Donc si on dessine de la couleur $FF00FF sur la fenêtre, on fait des trous
; La veleur 200 est l'effet de transparence globale de la fenêtre, 0 donne invisible, et 255 complètement opaque
SetLayeredWindow2(WindowID(0), 200, $FF00FF)
Repeat
Event = WaitWindowEvent()
Select Event
Case #PB_Event_Menu
Select EventMenu() ; Menus
EndSelect
Case #PB_Event_Gadget
Select EventGadget() ; Gadgets
EndSelect
Case #WM_MOUSEMOVE
StartDrawing(WindowOutput(0))
Circle(WindowMouseX(0), WindowMouseY(0), 8, $FF00FF)
StopDrawing()
EndSelect
Until Event = #PB_Event_CloseWindow
End