Page 1 sur 1

OpenWindowScreen() et MDIGadget()

Publié : dim. 13/juin/2004 20:40
par comtois
J'ai pris l'exemple de l'aide ,et j'ai ajouté un OpenWindowedScreen() pour voir ce que ça donnait , et je ne sais pas comment forcer les fenêtres filles à s'afficher par dessus l"écran , est-ce possible ?

Code : Tout sélectionner

InitSprite()
If OpenWindow(0,0,0,400,300,#PB_Window_SystemMenu|#PB_Window_ScreenCentered|#PB_Window_SizeGadget|#PB_Window_MaximizeGadget,"MDIGadget") 
    OpenWindowedScreen(WindowID(),0,30,200,200,0,0,0)
    If CreateGadgetList(WindowID(0)) And CreateMenu(0, WindowID(0)) 
      MenuTitle("Menu index 0") 
      MenuTitle("MDI windows menu") 
        MenuItem(0, "self created item") 
        MenuItem(1, "self created item") 
        
      MDIGadget(0, 0, 0, 0, 0, 1, 2, #PB_MDI_AutoSize) 
        AddGadgetItem(0, -1, "child window") 
          ; add gadgets here... 
      CloseGadgetList() 
    EndIf 
    
    Repeat 
    ClearScreen(200,155,255)
    FlipBuffers()
    Until WaitWindowEvent()=#PB_Event_CloseWindow 
  EndIf 

Publié : dim. 13/juin/2004 20:45
par fweil
Là je crois que c'est sans issue si tu veux passer les gadgets par dessus la partie screen, parce que dans ta boucle tu écrases en permanence avec le ClearScreen ...

Le seul moyen serait d'ouvrir deux fenêtres séparées et d'utiliser un SetForegroundWindow_() de celle contenant les gadgets.

Publié : dim. 13/juin/2004 20:46
par Aranoth
j'avais déjà essayé de mettre des gadgets au dessus d'un screen, Fred m'avait dit que ct impossible, mais que peut etre dans une prochaine version...

Publié : dim. 13/juin/2004 20:48
par fweil
J'ajoute on peut probablement créer deux fenêtres séparées qui sont rattachées en tant que filles d'une fenêtre globale, l'une contenant le mode screen et l'autre les gadgets.

Je pense que comme ça le tour est joué.

Publié : dim. 13/juin/2004 21:02
par comtois
pour l'instant je fais plusieurs fenêtres ( sans MDI) , une fenêtre principale avec le screen et 3 autres fenêtres qui s'affichent par dessus , bon c'est pas du MDI , mais tant pis ,ça va rester comme ça , parce que là je ne vois pas comment faire ce que tu dis :?

j'irai voir sur code archiv s'il y a des exemples pour faire ce genre de truc
deux fenêtres séparées qui sont rattachées en tant que filles d'une fenêtre globale, l'une contenant le mode screen et l'autre les gadgets.
Je ne vois pas ce que ça fait concrètement par rapport au MDI?




le but c'est d'améliorer ce truc là ( l'éditeur map 3D ) :

http://perso.wanadoo.fr/comtois/sources ... DBETA3.zip

A moins qu'il y ait d'autres solutions , l'objectif étant d'avoir le screen qui occupe tout l'écran ,c'est plus confortable, et des fenêtres outils qui s'affichent par dessus , et qui y restent .

Merci pour vos réponses.

Publié : dim. 13/juin/2004 23:14
par fweil
Ben je t'envoies un essai comme ça ... sans trop chercher + loin, mais voila ce que je voulais dire. Si les fenêtres sont expédiées aux bords, tu peux agrandir la fenêtre globale pour tout voir.

Code : Tout sélectionner

  InitSprite() 
  If OpenWindow(0,0,0,400,300,#PB_Window_SystemMenu|#PB_Window_ScreenCentered|#PB_Window_SizeGadget|#PB_Window_MaximizeGadget,"Global") 
      If OpenWindow(1,0, 0, 400, 300, #PB_Window_SystemMenu|#PB_Window_ScreenCentered|#PB_Window_SizeGadget|#PB_Window_MaximizeGadget,"Screen") 
          OpenWindowedScreen(WindowID(1),0,30,200,200,0,0,0) 
      EndIf
      If OpenWindow(2,0, 0, 400, 300, #PB_Window_SystemMenu|#PB_Window_ScreenCentered|#PB_Window_SizeGadget|#PB_Window_MaximizeGadget,"Gadgets") 
          If CreateGadgetList(WindowID(2)) And CreateMenu(0, WindowID(2)) 
              MenuTitle("Menu index 0") 
              MenuTitle("MDI windows menu") 
              MenuItem(0, "self created item") 
              MenuItem(1, "self created item") 
              MDIGadget(0, 0, 0, 0, 0, 1, 2, #PB_MDI_AutoSize) 
              AddGadgetItem(0, -1, "child window") 
              ; add gadgets here... 
              CloseGadgetList() 
          EndIf 
      EndIf
      SetParent_(WindowID(2), WindowID(0))
      SetParent_(WindowID(1), WindowID(0))
      Repeat 
        ClearScreen(200,155,255) 
        FlipBuffers() 
        SetForegroundWindow_(WindowID(2))
      Until WaitWindowEvent()=#PB_Event_CloseWindow 
  EndIf 
End

Publié : dim. 13/juin/2004 23:58
par comtois
Ok super , je vais regarder ce que je peux faire avec ça :)

Merci

Publié : sam. 24/juil./2004 12:48
par comtois
ça fonctionne comme je voulais .

entre cette solution , et la solution avec le panelgadget j'ai l'embarras du choix maintenant :)

Code : Tout sélectionner

InitSprite() 
If OpenWindow(0,0,0,400,300,#PB_Window_SystemMenu|#PB_Window_ScreenCentered|#PB_Window_SizeGadget|#PB_Window_MaximizeGadget,"MDIGadget") 
  ;OpenWindowedScreen(WindowID(),0,30,200,200,0,0,0) 
  If CreateGadgetList(WindowID(0)) And CreateMenu(0, WindowID(0)) 
    MenuTitle("Menu index 0") 
    MenuTitle("MDI windows menu") 
    MenuItem(0, "self created item") 
    MenuItem(1, "self created item") 
    
    MDIGadget(0, 0, 0, 0, 0, 1, 2, #PB_MDI_AutoSize) 
    AddGadgetItem(0, -1, "Matrix 3D") 
    hCont = ContainerGadget(1,10,10,200,200,#PB_Container_Double) 
    If OpenWindowedScreen( hCont, 0, 0, 200, 200, 0, 0, 0 ) = 0 
      MessageRequester( "Erreur" , "Impossible d'ouvrir l'écran " , 0 ) 
      End 
    EndIf
    ; add gadgets here... 
    AddGadgetItem(0, -1, "Textures") 
    CloseGadgetList() 
  EndIf 
  
  Repeat 
    ClearScreen(200,155,255) 
    FlipBuffers() 
  Until WaitWindowEvent()=#PB_Event_CloseWindow 
EndIf 
avec le sprite de Chris

Code : Tout sélectionner

InitSprite() 
If OpenWindow(0,0,0,400,300,#PB_Window_SystemMenu|#PB_Window_ScreenCentered|#PB_Window_SizeGadget|#PB_Window_MaximizeGadget,"MDIGadget") 
  ;OpenWindowedScreen(WindowID(),0,30,200,200,0,0,0) 
  If CreateGadgetList(WindowID(0)) And CreateMenu(0, WindowID(0)) 
    MenuTitle("Menu index 0") 
    MenuTitle("MDI windows menu") 
    MenuItem(0, "self created item") 
    MenuItem(1, "self created item") 
    
    MDIGadget(0, 0, 0, 0, 0, 1, 2, #PB_MDI_AutoSize) 
    AddGadgetItem(0, -1, "Matrix 3D") 
    hCont = ContainerGadget(1,10,10,200,200,#PB_Container_Double) 
    If OpenWindowedScreen( hCont, 0, 0, 200, 200, 0, 0, 0 ) = 0 
      MessageRequester( "Erreur" , "Impossible d'ouvrir l'écran " , 0 ) 
      End 
    EndIf
    ; add gadgets here... 
    AddGadgetItem(0, -1, "Textures") 
    CloseGadgetList() 
  EndIf 
  
  If CreateSprite(1000,24,24) 
    StartDrawing(SpriteOutput(1000)) 
    Box(0,0,24,24,RGB($0,$0,$FF)) 
    StopDrawing() 
  EndIf 
  
  Dep = 8 
 
  Repeat 
    
    ClearScreen(0,155,255) 
        DisplaySprite(1000, x, 100) 
    
    x + Dep 
    If x >=200 Or x <=0 : Dep = -Dep : EndIf 
    FlipBuffers() 
  Until WindowEvent()=#PB_Event_CloseWindow 
EndIf