T'es super sympa.
J'ai peut etre trouvé une bidouille.
J'ai pris une brique par ci, une par la.
Et j'ai trouvé ça.
Ca fait ce que je voulais, mais je comprend encore pas tout les morceaux de code des autres
Code : Tout sélectionner
Declare DrawTransparentBitmap(hdc, hBitmap, xStart, yStart, TransColor)
Declare OpenMaskedWindow_Fusee(WinID, x, y, Title.s, imID)
Declare WindowClientMouseX(m)
Declare WindowClientMouseY(m)
Global HwndFusee
UsePNGImageDecoder()
Dim BallonX(10)
Dim BallonY(10)
BallonX(0)= 50
BallonY(0)= 50
BallonX(1)= 80
BallonY(1)= 150
HwndFusee = OpenMaskedWindow_Fusee(1, GetSystemMetrics_(#SM_CXSCREEN) / 4, GetSystemMetrics_(#SM_CYSCREEN) / 4, "", 0)
LoadImage(0, "c:\canon.bmp")
LoadImage(1, "c:\ball.bmp")
For i = 0 To 1
dc = StartDrawing(WindowOutput(1))
DrawTransparentBitmap(dc,ImageID(i), BallonX(i), BallonY(i), #White)
StopDrawing()
Next
Repeat
Evenement = WaitWindowEvent()
If Evenement = #WM_LBUTTONDOWN
For i = 0 To 1
If WindowClientMouseX(1) > BallonX And WindowClientMouseX(1) < BallonX(i) + ImageWidth(i) And WindowClientMouseY(1) > BallonY(i) And WindowClientMouseY(1) < BallonY(i) + ImageHeight(i)
MessageRequester("","Clic sur bouton " + Str(i) ,0)
EndIf
Next
EndIf
Until Evenement = #PB_Event_CloseWindow
Procedure DrawTransparentBitmap(hdc, hBitmap, xStart, yStart, TransColor)
; by netmaestro based on http://support.microsoft.com/kb/79212/EN-US/
Define.POINT ptSize
hdcTemp = CreateCompatibleDC_(hdc)
SelectObject_(hdcTemp, hBitmap)
GetObject_(hBitmap, SizeOf(BITMAP), bm.BITMAP)
ptSize\x = bm\bmWidth
ptSize\y = bm\bmHeight
DPtoLP_(hdcTemp, @ptSize, 1)
hdcBack = CreateCompatibleDC_(hdc)
hdcObject = CreateCompatibleDC_(hdc)
hdcMem = CreateCompatibleDC_(hdc)
hdcSave = CreateCompatibleDC_(hdc)
bmAndBack = CreateBitmap_(ptSize\x, ptSize\y, 1, 1, #Null)
bmAndObject = CreateBitmap_(ptSize\x, ptSize\y, 1, 1, #Null)
bmAndMem = CreateCompatibleBitmap_(hdc, ptSize\x, ptSize\y)
bmSave = CreateCompatibleBitmap_(hdc, ptSize\x, ptSize\y)
bmBackOld = SelectObject_(hdcBack, bmAndBack)
bmObjectOld = SelectObject_(hdcObject, bmAndObject)
bmMemOld = SelectObject_(hdcMem, bmAndMem)
bmSaveOld = SelectObject_(hdcSave, bmSave)
SetMapMode_(hdcTemp, GetMapMode_(hdc))
BitBlt_(hdcSave, 0, 0, ptSize\x, ptSize\y, hdcTemp, 0, 0, #SRCCOPY)
cColor = SetBkColor_(hdcTemp, TransColor)
BitBlt_(hdcObject, 0, 0, ptSize\x, ptSize\y, hdcTemp, 0, 0, #SRCCOPY)
SetBkColor_(hdcTemp, cColor)
BitBlt_(hdcBack, 0, 0, ptSize\x, ptSize\y, hdcObject, 0, 0, #NOTSRCCOPY)
BitBlt_(hdcMem, 0, 0, ptSize\x, ptSize\y, hdc, xStart, yStart, #SRCCOPY)
BitBlt_(hdcMem, 0, 0, ptSize\x, ptSize\y, hdcObject, 0, 0, #SRCAND)
BitBlt_(hdcTemp, 0, 0, ptSize\x, ptSize\y, hdcBack, 0, 0, #SRCAND)
BitBlt_(hdcMem, 0, 0, ptSize\x, ptSize\y, hdcTemp, 0, 0, #SRCPAINT)
BitBlt_(hdc, xStart, yStart, ptSize\x, ptSize\y, hdcMem, 0, 0, #SRCCOPY)
BitBlt_(hdcTemp, 0, 0, ptSize\x, ptSize\y, hdcSave, 0, 0, #SRCCOPY)
DeleteObject_(SelectObject_(hdcBack, bmBackOld))
DeleteObject_(SelectObject_(hdcObject, bmObjectOld))
DeleteObject_(SelectObject_(hdcMem, bmMemOld))
DeleteObject_(SelectObject_(hdcSave, bmSaveOld))
DeleteDC_(hdcMem)
DeleteDC_(hdcBack)
DeleteDC_(hdcObject)
DeleteDC_(hdcSave)
DeleteDC_(hdcTemp)
EndProcedure
Procedure WindowClientMouseX(win) ; added param, 11.12.03
; Returns X-Position of MouseCursor
; in the current window's client area
; or -1 if mouse cursor isnt in this area.
GetCursorPos_(mouse.POINT)
ScreenToClient_(WindowID(win),mouse)
GetClientRect_(WindowID(win),rect.RECT)
If mouse\x < 0 Or mouse\x > rect\right
ProcedureReturn -1
ElseIf mouse\y < 0 Or mouse\y > rect\bottom ; added 11.12.03
ProcedureReturn - 1
Else
ProcedureReturn mouse\x
EndIf
EndProcedure
Procedure WindowClientMouseY(win) ; added param, 11.12.03
; Returns Y-Position of MouseCursor
; in the current window's client area
; or -1 if mouse cursor isnt in this area.
GetCursorPos_(mouse.POINT)
ScreenToClient_(WindowID(win),mouse)
GetClientRect_(WindowID(win),rect.RECT)
If mouse\y < 0 Or mouse\y > rect\bottom
ProcedureReturn -1
ElseIf mouse\x < 0 Or mouse\x > rect\right ; added 11.12.03
ProcedureReturn - 1
Else
ProcedureReturn mouse\y
EndIf
EndProcedure
Procedure OpenMaskedWindow_Fusee(WinID, x, y, Title.s, imID)
HwndFusee = OpenWindow(winID, GetSystemMetrics_(#SM_CXSCREEN), y, 468, 324, Title, #WS_POPUP)
Memhandle = GlobalAlloc_(#GMEM_MOVEABLE,1976)
*Mem = GlobalLock_(Memhandle)
UnpackMemory(?Fusee_Mask, *Mem)
Region = ExtCreateRegion_(0,1968, *Mem)
SetWindowRgn_(HwndFusee, Region, #True)
Pic = CatchImage(imID,?Fusee)
Brush = CreatePatternBrush_(Pic)
SetClassLong_(HwndFusee, #GCL_HBRBACKGROUND, Brush)
ResizeWindow(WinID, x, y, #PB_Ignore, #PB_Ignore)
GlobalUnlock_(Memhandle)
GlobalFree_(Memhandle)
DeleteObject_(Region)
ProcedureReturn HwndFusee
DataSection
Fusee:
;***********
IncludeBinary "c:\Fusee.png"
Fusee_Mask:
;***********
Data.l $7B0434A ,$37FC0000,$8A10001 ,$1BCA20C8,$39160101,$A02A5908,$4604016E,$D8AD0C0 ,$85CC214 ,$9D22282B
Data.l $805DF3C9,$8BA2CC61,$49860462,$842C797 ,$57082EA3,$17364404,$1C400B06,$405928E6,$B0C522B6,$CB9830B9
Data.l $B34DD332,$36180456,$5A711997,$B402BA66,$8828C022,$74190C19,$22B32B40,$1D2B8820,$56F6020C,$9DD730C
Data.l $60210AE ,$20C244E0,$B1C72B28,$EEA312B6,$C044211 ,$41840840,$8695620 ,$B6C7B345,$C2840E84,$4E854218
Data.l $5381A719,$9DD42742,$60220AD4,$C2D4E00 ,$C56AF02 ,$AD092B23,$E0067610,$E020DD44,$B0B0022A,$610AC312
Data.l $664EC562,$7513C89D,$CB20B3A7,$387A8018,$751850D6,$60221A8F,$C394200 ,$C55AC02 ,$AC692AD3,$E006B610
Data.l $143DDD44,$C5532C6 ,$AC092AEB,$EB1AE610,$3801D614,$AA087751,$AACC808A,$18423104,$56D33156,$D5F4AD27
Data.l $7751AB89,$808AEB1A,$31163801,$C41A608 ,$808A78A2,$31264453,$8B10A408,$E022A0E8,$C4D5124 ,$9310A782
Data.l $E3299A28,$AA0C5134,$9842D144,$75133154,$8A9AEA7 ,$156C8018,$3105C083,$22A0E8A ,$C59B154E,$AC416020
Data.l $808AA3A2,$31754593,$2CC49608,$3808063A,$8318145D,$A630A920,$4EEA628E,$30118557,$6322700 ,$18625201
Data.l $9C04D71D,$418D0A32,$D1965470,$49C02891,$41820A3 ,$1C084546,$EA92DA80,$38015514,$8A087751,$28EE808A
Data.l $400C31C6,$28EAA308,$1C626594,$9C048B1D,$51E40A3A,$31514F66,$A627A88C,$80189842,$40837513,$A3C08A8
Data.l $8541F63 ,$A270D01C,$1504A4EE,$C610301 ,$A40A1064,$7D8C47D3,$71942C74,$4C742902,$42A2E90B,$18C2813A
Data.l $115C748 ,$644C90A7,$26100010,$DD4471D4,$32C2A8A9,$AA60E006,$92931498,$61081162,$E9C6A58B,$9B2720A4
Data.l $A6E5842 ,$59041963,$70619C08,$98A1EC9A,$63134DD3,$21652709,$A70B20C ,$58741383,$414E9C04,$29C0A72C
Data.l $4A7413A7,$E53A4586,$653AC414,$1D3A749C,$7CC67CD5,$3A7C678A,$3A7E14E9,$842C9C65,$59389639,$EAD58276
Data.l $8C2A30A7,$FD389865,$E9CA0274,$18C10B2 ,$C229CE15,$76102022,$2A0A39D9,$196295B4,$9C08B5E6,$15090A84
Data.l $CA74B84 ,$B3325BF3,$150D50D5,$BA0084C6,$2A443810,$2343
EndDataSection
EndProcedure