UseJPEGImageDecoder ()
UsePNGImageDecoder ()
Procedure OpenMaskedWindow_test1(winID,x,y,title.s,imID)
hwnd= OpenWindow (winID, GetSystemMetrics_ ( #SM_CXSCREEN ),y,770,509, #WS_POPUP ,title)
memhandle= GlobalAlloc_ ( #GMEM_MOVEABLE ,952)
*mem= GlobalLock_ (memhandle)
UnpackMemory (?test1_mask,*mem)
region= ExtCreateRegion_ (0,944,*mem)
SetWindowRgn_ (hwnd,region, #True )
pic= CatchImage (imID,?test1)
brush= CreatePatternBrush_ (pic)
SetClassLong_ (hwnd, #GCL_HBRBACKGROUND ,brush)
MoveWindow (x,y)
GlobalUnlock_ (memhandle)
GlobalFree_ (memhandle)
DeleteObject_ (region)
ProcedureReturn hwnd
DataSection
test1:
IncludeBinary "test1.png"
test1_mask:
Data.l $3B0434A ,$F3510000,$8A10000 ,$19CA20C8,$1B060101,$63F5908 ,$95B00026,$8086C025,$30108740,$22224A45
Data.l $21418A25,$9160C100,$A0A9128F,$B0408010,$64A34748,$20040850,$51926458,$214283A ,$B9162C10,$A122128
Data.l $8B040801,$A4A9458 ,$82000085,$A5132845,$214285 ,$891122C1,$10A14312,$48B06080,$50E4A944,$58204008
Data.l $7916A204,$42610428,$C21304C0,$9610C432,$CB01E21 ,$88659971,$9C5084CF,$4D788426,$109BCB08,$2C21A196
Data.l $86587143,$714337E2,$28784250,$10942C21,$CB08A196,$28655C50,$27144A3E,$12978425,$610B32C2,$30088A19
Data.l $AEC2A259,$7FC3839B,$C2101011,$810797B6,$45F117F ,$F027BC9C,$F010D041,$C0450117,$1F227C49,$7E81FB04
Data.l $9C047011,$41F307CA,$17E05F90,$9C0A701 ,$41F107D ,$117D45F7,$D69C4A70,$50418107,$117045F ,$7DA9F627
Data.l $F304D010,$7011C045,$7DE1F72 ,$5F107C81,$27019C04,$41F841F8,$17B81150,$49C0A701,$41F107E ,$117B45ED
Data.l $E89C9A70,$A0410107,$117045E ,$7EC9FAA7,$E704A410,$7011C045,$7F01FBA ,$5E307941,$A7019C04,$107F41FC
Data.l $45DC1780,$DA7049C0,$8107041F,$89101175,$F864
Data.b $0,$0
EndDataSection
EndProcedure
Enumeration
#Window_0
#Code_0
#Image_0
#Image_1
#Image_2
#Image_4
#Image_16
#Image_17
#Image_18
#Image_19
#Image_20
#Image_21
#ImageGadget_0
#ImageGadget_1
EndEnumeration
UsePNGImageDecoder ()
UseJPEGImageDecoder ()
UseTIFFImageDecoder ()
UseTGAImageDecoder ()
;- Les images peuvent etre utilisees dans une procedure
Global Image0
Global Image1
Global Image2
Global Image4
Global Image16
Global Image17
Global Image18
Global Image19
Global Image20
;- Mise en mémoire des images
Image0 = CatchImage ( #Image_0 , ?Image0)
Image1 = CatchImage ( #Image_1 , ?Image1)
Image2 = CatchImage ( #Image_2 , ?Image2)
Image4 = CatchImage ( #Image_4 , ?Image4)
Image16 = CatchImage ( #Image_16 , ?Image16)
Image17 = CatchImage ( #Image_17 , ?Image17)
Image18 = CatchImage ( #Image_18 , ?Image18 )
Image19 = CatchImage ( #Image_19 , ?Image19)
Image20 = CatchImage ( #Image_20 , ?Image20)
;- Les images seront inclus dans le programmes lors de la compilation
DataSection
Image0:
IncludeBinary "minimize.PNG"
Image1:
IncludeBinary "top1.PNG"
Image2:
IncludeBinary "top.PNG"
Image4:
IncludeBinary "top2.png"
Image16:
IncludeBinary "close1.PNG"
Image17:
IncludeBinary "close.PNG"
Image18:
IncludeBinary "maximize1.PNG"
Image19:
IncludeBinary "maximize.PNG"
Image20:
IncludeBinary "minimize1.PNG"
EndDataSection
hwnd=OpenMaskedWindow_test1( #Window_0 ,( GetSystemMetrics_ ( #SM_CXSCREEN )-770)/2,( GetSystemMetrics_ ( #SM_CYSCREEN )-509)/2, "Installeur - Skin 1" , #Code_0 )
CreateGadgetList ( WindowID ())
UseImage ( #Image_1 )
ImageGadget ( #ImageGadget_1 ,516,9,51,27, ImageID ())
;SetTimer_(WindowID(#Window_0),0,10,0)
Repeat
Select WaitWindowEvent ()
Case #WM_MOUSEMOVE
If WindowMouseX ()>577 And WindowMouseX ()<624 And WindowMouseY ()>10 And WindowMouseY ()<35 ; REDUIRE LA FENETRE
If minimize=0 : minimize=1 : StartDrawing ( WindowOutput ()) : DrawImage (Image0,576,9) : StopDrawing () : EndIf
ElseIf WindowMouseX ()>637 And WindowMouseX ()<684 And WindowMouseY ()>10 And WindowMouseY ()<34 ; AGRANDIR LA FENETRE OU RESTORER
If maximize=0 : maximize=1 : StartDrawing ( WindowOutput ()) : DrawImage (Image19,636,9) : StopDrawing () : EndIf
ElseIf WindowMouseX ()>697 And WindowMouseX ()<747 And WindowMouseY ()>10 And WindowMouseY ()<35 ; FERMER LA FENETRE
If close=0 : close=1 : StartDrawing ( WindowOutput ()) : DrawImage (Image17,696,9) : StopDrawing () : EndIf
ElseIf WindowMouseX ()>516 And WindowMouseX ()<566 And WindowMouseY ()>10 And WindowMouseY ()<35 ; METTRE AU PREMIER PLAN
If top=0 : SetGadgetState ( #ImageGadget_1 , UseImage ( #Image_2 )) : top=1 : EndIf
Else
If minimize=1 : StartDrawing ( WindowOutput ()) : DrawImage (Image20,576,9) : StopDrawing () : minimize=0
ElseIf maximize=1 : StartDrawing ( WindowOutput ()) : DrawImage (Image18,636,9) : StopDrawing () : maximize=0
ElseIf close=1 : StartDrawing ( WindowOutput ()) : DrawImage (Image16,696,9) : StopDrawing () : close=0
ElseIf top=1 And act=0 : SetGadgetState ( #ImageGadget_1 , UseImage ( #Image_1 )) : top=0 : EndIf
EndIf
Case #WM_LBUTTONDOWN
If WindowMouseX ()>577 And WindowMouseX ()<624 And WindowMouseY ()>10 And WindowMouseY ()<35 ; REDUIRE LA FENETRE
If minimize=1 : StartDrawing ( WindowOutput ()) : DrawImage (Image20,576,9) : StopDrawing () : minimize=0 : EndIf
ShowWindow_ ( WindowID ( #Window_0 ), #SW_MINIMIZE )
ElseIf WindowMouseX ()>637 And WindowMouseX ()<684 And WindowMouseY ()>10 And WindowMouseY ()<34 ; AGRANDIR LA FENETRE OU RESTORER
If maximize=1 : StartDrawing ( WindowOutput ()) : DrawImage (Image18,636,9) : StopDrawing () : maximize=0 : EndIf
If StatuWin=0 : ShowWindow_ ( WindowID ( #Window_0 ), #SW_MAXIMIZE ) : StatuWin=1
Else : ShowWindow_ ( WindowID ( #Window_0 ), #SW_RESTORE ) : StatuWin=0 : EndIf
ElseIf WindowMouseX ()>697 And WindowMouseX ()<747 And WindowMouseY ()>10 And WindowMouseY ()<35 ; FERMER LA FENETRE
Quit=1
ElseIf WindowMouseY ()<100
SendMessage_ (hwnd, #WM_NCLBUTTONDOWN , #HTCAPTION ,0)
EndIf
;Case #WM_TIMER
Case #PB_EventGadget
Select EventGadgetID ()
Case #ImageGadget_1 ; METTRE AU PREMIER PLAN
If act=0
top=1 : act=1 : SetGadgetState ( #ImageGadget_1 , UseImage ( #Image_4 ))
SetWindowPos_ ( WindowID (), #HWND_TOPMOST , 0, 0, 0, 0, #SWP_NOSIZE | #SWP_NOMOVE )
Else
act=0 : top=0 : SetGadgetState ( #ImageGadget_1 , UseImage ( #Image_1 ))
SetWindowPos_ ( WindowID (), #HWND_NOTOPMOST , 0, 0, 0, 0, #SWP_NOSIZE | #SWP_NOMOVE )
EndIf
EndSelect
Case #PB_Event_CloseWindow
quit=1
EndSelect
Until quit=1