Idée pour une super fenêtre modale mais pas assez de co...

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Nombre
Messages : 24
Inscription : mar. 04/sept./2007 12:23

Idée pour une super fenêtre modale mais pas assez de co...

Message par Nombre »

J'ai une idée pour une super fenêtre modale mais pas assez de connaisances...

Il faudrai ce genre de shéma

Code : Tout sélectionner

Code des gadgets
Code de fenetre 2
Code de feneter 3
Code de la fenêtre principale : dans ce code il ya des boutons "Case #Win2" et "Case #Win 3"...

Sauf que vu que l'on a déja spécifié le code AVANT eh bien on est plus obligé de le réécrire après case....

Chépa si tout le monde a suivi ...
Si vous avez des idées,proposez :wink:
Avatar de l’utilisateur
Chris
Messages : 3731
Inscription : sam. 24/janv./2004 14:54
Contact :

Message par Chris »

Pas trop compris ton truc, mais qu'est-ce qui fait que ta fenêtre serait plus modale qu'une fenêtre modale "normale".

Une fenêtre est modale ou pas.
Soit elle est modale et donc, prend le contrôle de l'appli (ou du système) tant qu'elle est ouverte, et tu ne peux rien faire d'autre que de la fermer pour reprendre la main, (cas des boites de dialogue, par exemple), soit elle ne l'est pas, et tu peux travailler sur la fenêtre qui se trouve derrière, la réduire dans la barre de taches, etc, etc...
brossden
Messages : 829
Inscription : lun. 26/janv./2004 14:37

Message par brossden »

Une fenetre modale sans trop de problème je pense !

Code : Tout sélectionner

Enumeration
  #Win0 : #WinM : #BP0 : #Image0
EndEnumeration
ExamineDesktops()

Procedure Open_Window_0()
  OpenWindow (#Win0, 0, 0, 200, 80, "Fenetre Modale" , #PB_Window_SystemMenu|#PB_Window_ScreenCentered )
  CreateGadgetList(WindowID(#Win0))
  ButtonGadget(#BP0, 30, 20, 140, 30, "Fermer cette fenêtre")
EndProcedure

Procedure Modal(Win, Options)
  HideWindow(Win,1)
  Static WinA, Image
  If Options = 1
    #CAPTUREBLT = $40000000
    Image  = CreateImage ( #PB_Any, DesktopWidth (0), DesktopHeight (0))
    dc_bur = GetDC_ (0)
    DC_im = StartDrawing ( ImageOutput ( Image ))
    BitBlt_ (DC_im,0,0 , DesktopWidth (0), DesktopHeight (0), dc_bur , 0,0 , #SRCPAINT|#CAPTUREBLT )
    StopDrawing ()
    ReleaseDC_ (0, dc_bur)
    WinA = OpenWindow(#PB_Any,0, 0, DesktopWidth(0),DesktopHeight(0),"",  #PB_Window_BorderLess|#PB_Window_Invisible )
    Fond.LOGBRUSH\lbStyle=3 : Fond\lbColor=0 : Fond\lbHatch=ImageID(Image)
    SetClassLong_(WindowID(WinA),-10,CreateBrushIndirect_(Fond))
    HideWindow(WinA,0)
    DisableWindow(WinA,1)
    HideWindow(Win,0)
    StickyWindow(Win,1)

  ElseIf Options = 0
    HideWindow(WinA,1)
    StickyWindow(Win,0)
    CloseWindow(WinA)
    CloseWindow(Win)
  EndIf

EndProcedure

Open_Window_0()
Modal(#Win0,1 )
Repeat
  Event = WaitWindowEvent()
  GadgetID = EventGadget()
  If Event = #PB_Event_Gadget
    If GadgetID = #BP0
      Modal(#Win0,0 )
    EndIf
  EndIf
Until Event = #PB_Event_CloseWindow
End
Denis

Bonne Jounée à tous
Nombre
Messages : 24
Inscription : mar. 04/sept./2007 12:23

Message par Nombre »

Encore un code en brosse a dents( ah ok le jeu de mots avec ton pseudo j'ai même pas fait exprès :D )
Répondre