Papier peint sur une fenêtre

Partagez votre expérience de PureBasic avec les autres utilisateurs.
Avatar de l’utilisateur
Flype
Messages : 2431
Inscription : jeu. 29/janv./2004 0:26
Localisation : Nantes

Papier peint sur une fenêtre

Message 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
Image
Avatar de l’utilisateur
Chris
Messages : 3731
Inscription : sam. 24/janv./2004 14:54
Contact :

Message par Chris »

Pas mal! :D

Mais si tu mets des gadgets, ils s'effacent quand tu bouges la fenêtre :(
Avatar de l’utilisateur
Flype
Messages : 2431
Inscription : jeu. 29/janv./2004 0:26
Localisation : Nantes

Message 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
Image
Avatar de l’utilisateur
Flype
Messages : 2431
Inscription : jeu. 29/janv./2004 0:26
Localisation : Nantes

Message 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
Image
erix14
Messages : 480
Inscription : sam. 27/mars/2004 16:44
Contact :

Message 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 
comtois
Messages : 5186
Inscription : mer. 21/janv./2004 17:48
Contact :

Message par comtois »

C'est marrant ce truc :P
http://purebasic.developpez.com/
Je ne réponds à aucune question technique en PV, utilisez le forum, il est fait pour ça, et la réponse peut profiter à tous.
Avatar de l’utilisateur
Flype
Messages : 2431
Inscription : jeu. 29/janv./2004 0:26
Localisation : Nantes

Message par Flype »

bravo erix14, le rendu est excellent :P
et hop un truc à mettre dans la collection de codes...
Image
Oliv
Messages : 2117
Inscription : mer. 21/janv./2004 18:39

Message par Oliv »

Sympa :D
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Message 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
ImageLe bonheur est une route...
Pas une destination

PureBasic Forum Officiel - Site PureBasic
Avatar de l’utilisateur
Ulix
Messages : 315
Inscription : ven. 04/juin/2004 14:27
Localisation : Frontignan

Message 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.
#PB_IS_COOL
Messages : 15
Inscription : jeu. 17/mai/2007 16:01

Message 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 !!!!:!:!:!:!:!:!:!:!:
3...2...1...
CODEZ !!! :wink:
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message 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
Anonyme

Message par Anonyme »

dans fichier->préférences tu peut paramétrer tout ca. :wink:
Avatar de l’utilisateur
Flype
Messages : 2431
Inscription : jeu. 29/janv./2004 0:26
Localisation : Nantes

Message par Flype »

ou alors tu as la version DEMO de purebasic. :?: :?:
#PB_IS_COOL
Messages : 15
Inscription : jeu. 17/mai/2007 16:01

Message par #PB_IS_COOL »

ou alors tu as la version DEMO de purebasic.:?::?:
Ben ouais... :confused:
Dommage ! :'(
Merci quand même !:-|
@+
3...2...1...
CODEZ !!! :wink:
Répondre