Page 1 sur 2

Papier peint sur une fenêtre

Publié : mer. 15/févr./2006 15:50
par Flype
Tout petit truc rigolo pour avoir le papier pein du bureau dans une fenêtre (Source PB4) :

Code : Tout sélectionner

Procedure.l myCallback(hWnd.l,uMsg.l,wParam.l,lParam.l)
  Result = #PB_ProcessPureBasicEvents
  Select uMsg
    Case #WM_PAINT,#WM_SIZING, #WM_MOVING: PaintDesktop_(GetDC_(hWnd))
  EndSelect
  ProcedureReturn Result
EndProcedure 

If OpenWindow(0,100,100,320,240,#PB_Window_SystemMenu|#PB_Window_SizeGadget,"")
  SetWindowCallback(@myCallback(),0)
  Repeat:Until WaitWindowEvent()=#PB_Event_CloseWindow
EndIf

Publié : mer. 15/févr./2006 16:33
par Chris
Pas mal! :D

Mais si tu mets des gadgets, ils s'effacent quand tu bouges la fenêtre :(

Publié : mer. 15/févr./2006 17:02
par Flype
pas si tu fait comme çà par exemple.

Code : Tout sélectionner

Procedure.l myCallback(hWnd.l,uMsg.l,wParam.l,lParam.l)
  Select uMsg
    Case #WM_PAINT,#WM_SIZING,#WM_MOVING
      PaintDesktop_(GetDC_(GadgetID(3)))
  EndSelect
  ProcedureReturn #PB_ProcessPureBasicEvents
EndProcedure

If OpenWindow(0,100,100,320,240,#PB_Window_SystemMenu|#PB_Window_SizeGadget,"")
  CreateGadgetList(WindowID(0))
  ButtonGadget(1,5,5,100,50,"Hello")
  EditorGadget(2,5,60,100,175)
  ContainerGadget(3,110,5,205,230,#PB_Container_Double)
  CloseGadgetList()
  SetWindowCallback(@myCallback(),0)
  Repeat:Until WaitWindowEvent()=#PB_Event_CloseWindow
EndIf

Publié : mer. 15/févr./2006 17:08
par Flype
ou comme çà même si çà clignote dur (c'est juste pour le fun) :

Code : Tout sélectionner

Procedure.l myCallback(hWnd.l,uMsg.l,wParam.l,lParam.l)
  Select uMsg
    Case #WM_PAINT,#WM_SIZING,#WM_MOVING
      PaintDesktop_(GetDC_(hWnd))
      For i=1 To 2
        RedrawWindow_(GadgetID(i),0,0,$407)
      Next
  EndSelect
  ProcedureReturn #PB_ProcessPureBasicEvents
EndProcedure

If OpenWindow(0,100,100,320,240,#PB_Window_SystemMenu|#PB_Window_SizeGadget,"")
  CreateGadgetList(WindowID(0))
  ButtonGadget(1,5,5,100,50,"Hello")
  EditorGadget(2,5,60,100,175)
  SetWindowCallback(@myCallback(),0)
  Repeat:Until WaitWindowEvent()=#PB_Event_CloseWindow
EndIf

Publié : mer. 15/févr./2006 18:11
par erix14
J'ai amélioré un peu ton programme pour enlever le clignotement :D

Code : Tout sélectionner

Procedure.l myCallback(hWnd.l,uMsg.l,wParam.l,lParam.l)
   Select uMsg
      Case #WM_ERASEBKGND
         ProcedureReturn
      Case #WM_PAINT
         For i=1 To 2
            x = GadgetX(i)
            y = GadgetY(i)
            SetRect_(Rect.RECT,x,y,x+GadgetWidth(i),y+GadgetHeight(i))
            ValidateRect_(hWnd,Rect)
            RedrawWindow_(GadgetID(i),0,0,$407)
         Next 
         PaintDesktop_(BeginPaint_(hWnd,ps.PAINTSTRUCT))
         EndPaint_(hWnd,ps)
      Case #WM_SIZING,#WM_MOVING
         InvalidateRect_(hWnd,0,1)
   EndSelect
   ProcedureReturn #PB_ProcessPureBasicEvents
EndProcedure

If OpenWindow(0,100,100,320,240,#PB_Window_SystemMenu|#PB_Window_SizeGadget,"")
   CreateGadgetList(WindowID(0))
   ButtonGadget(1,5,5,100,50,"Hello")
   EditorGadget(2,5,60,100,175)
   SetWindowCallback(@myCallback(),0)
   InvalidateRect_(WindowID(0),0,1)
   Repeat:Until WaitWindowEvent()=#PB_Event_CloseWindow
EndIf 

Publié : mer. 15/févr./2006 18:21
par comtois
C'est marrant ce truc :P

Publié : mer. 15/févr./2006 18:43
par Flype
bravo erix14, le rendu est excellent :P
et hop un truc à mettre dans la collection de codes...

Publié : mer. 15/févr./2006 19:35
par Oliv
Sympa :D

Publié : mar. 14/nov./2006 13:24
par Kwai chang caine
Bonjour à tous

C'est vraiment géant. :10: Je cherchais exactement ça ??? :onfire:

J'aurais 2 questions :

1/ Est ce que ça marche sur tous les OS ????

2/ Peut on faire la fenetre ronde ???

Encore bravo FLYPE et ERIX14

Vous etes tellement bons, qu'on devrait presque etre jaloux :lol: :lol: :lol:

Encore merci
Bonne journée

Publié : ven. 17/nov./2006 11:09
par Ulix
Excellent ! :lol:

Peut-on faire pareil sans callback et sans Api ?
Quelqu'un a-t-il un exemple ?

Je demande celà pour pouvoir l'utilisé sous linux !

Merci.

Publié : ven. 18/mai/2007 12:01
par #PB_IS_COOL
ahahaha....chez moi sa marche pô :cry:...
J'ai JaPBe et il ne connaît pas #WM_PAINT et tous les trucs d'API Win32...
COMMENT SA SE FAIT ???:?: :cry:
OOOOUIUUUUUIUIUINNNN !!!!:!:!:!:!:!:!:!:!:

Publié : ven. 18/mai/2007 12:08
par Backup
#PB_IS_COOL a écrit :ahahaha....chez moi sa marche pô :cry:...
J'ai JaPBe et il ne connaît pas #WM_PAINT et tous les trucs d'API Win32...
COMMENT SA SE FAIT ???:?: :cry:
OOOOUIUUUUUIUIUINNNN !!!!:!:!:!:!:!:!:!:!:

si! en principe ça marche avec Japbe, puisque perso je n'utilise que lui !! :D

refait une installation, si je me souviens bien c'est a l'installe qu'il te demande d'activer tout un tas de trucs du genre :D

Publié : ven. 18/mai/2007 12:31
par Anonyme
dans fichier->préférences tu peut paramétrer tout ca. :wink:

Publié : ven. 18/mai/2007 16:09
par Flype
ou alors tu as la version DEMO de purebasic. :?: :?:

Publié : ven. 18/mai/2007 18:29
par #PB_IS_COOL
ou alors tu as la version DEMO de purebasic.:?::?:
Ben ouais... :confused:
Dommage ! :'(
Merci quand même !:-|
@+