Une Fenêtre incrustée dans une autre fenêtre !

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
nico
Messages : 3702
Inscription : ven. 13/févr./2004 0:57

Une Fenêtre incrustée dans une autre fenêtre !

Message par nico »

Je voudrais créer une fenêtre dans une autre mais je n'y arrive pas.
Je pensais que l'option FenetreMereID me permettait de le faire.

hwnd = OpenWindow(0,300,350,400,400,#PB_Window_SystemMenu,"DropDown")
hwnd1.l = OpenWindow(1,0,100,400,100,#PB_Window_BorderLess,"DropDown",hwnd)


Une idée......!!!
comtois
Messages : 5186
Inscription : mer. 21/janv./2004 17:48
Contact :

Message par comtois »

je n'y connais rien ; mais il me semble que le sujet a déjà été abordé ici ? ou ça n'a rien à voir ? bon tu verras bien si tu peux en tirer quelque chose :)

http://purebasic.hmt-forum.com/viewtopic.php?t=143
Anonyme2
Messages : 3518
Inscription : jeu. 22/janv./2004 14:31
Localisation : Sourans

Message par Anonyme2 »

Il me semble avoir posté quelque chose sur l'ancien forum peut-être lorsque j'ai posté du code pour arrondir les angles des fenêtres.
Anonyme2
Messages : 3518
Inscription : jeu. 22/janv./2004 14:31
Localisation : Sourans

Message par Anonyme2 »

Pour compiler ce code, il faut les librairies externes WindowEx version 2 il me semble de Roger Beausoleil alias VPurebasic ainsi que la librairies de Danilo SkinWin qui est dans son pack.

On cré 2 fenêtres, une bleue et une rouge.

je colorie la fenêtre #FenetreBleue en bleu foncé avec la commande SetWinBackgroundColor(#FenetreBleue, $D4BE76)

Puis je charge l'icône (les datas) et j'affiche un bouton avec cet icône sur cette fenêtre bleue

Puis je cré la fenêtre rouge invisible puis avec les commandes SetWindowStyles() j'attribue le style à cette fenêtre rouge, avec la commande SetWindowParent() je défini la fenêtre mère te la fenêtre enfant. Et enfin je colorie en rouge et j'affiche la fenêtre rouge.

Il faut se reporter à l'aide de ces librairies pour utiliser les commandes.

Code : Tout sélectionner

;;======================================================================
;;              constantes
;;======================================================================

Enumeration
  #FenetreRouge
  #FenetreBleue
  #BoutonQuitter
  #IconeQuitter
EndEnumeration

;;======================================================================
;;======================================================================

If OpenWindow(#FenetreBleue, 0, 0, 400, 250, #PB_Window_ScreenCentered  ,"     Fenêtre dans fenêtre")
  BarreTitre = WindowID()
  SetWinBackgroundColor(BarreTitre , $D4BE76)
;  ShowTitlebar(BarreTitre , #false)

   If CreateGadgetList(BarreTitre )
     IconeQuitter = CatchImage(#IconeQuitter, ?QuitterIco)  ; charge l'icône petite croix pour fermer les fenêtres
     If IconeQuitter
        ButtonImageGadget(#BoutonQuitter, WindowWidth() - ImageWidth() - 25, 4, ImageWidth(), ImageHeight(), IconeQuitter)
     Else
        MessageRequester(" Erreur", " impossible de charger l'image ?QuitterIco", 16)
        End
     EndIf
     EndIf

;   ; création de la fenêtre rouge
     If OpenWindow(#FenetreRouge, 150, 125, 100, 75 ,#PB_Window_Invisible, "")
        HwndFenetrePrincipale = WindowID(#FenetreRouge)
        SetWindowStyles(#FenetreRouge, #WS_CLIPCHILDREN | #WS_CHILD, #WS_VISIBLE)
        SetWindowParent(#FenetreRouge, #FenetreBleue)
        SetWinBackgroundColor(HwndFenetrePrincipale , 255)  ; 255 = couleur rouge
        HideWindow(#FenetreRouge, 0) ; affiche la fenêtre rouge
     EndIf


 Repeat
  Select WaitWindowEvent()
        
     Case #PB_EventGadget
        Select EventGadgetID()
              
           Case #BoutonQuitter
              Quit + 1
              
        EndSelect
        
     Case #PB_EventCloseWindow
        Quit + 1
        
  EndSelect
  
Until quit

EndIf
End

DataSection
  QuitterIco :
  
     Data.l $00010000, $10100001, $00010000, $03680018, $00160000, $00280000
     Data.l $00100000, $00200000, $00010000, $00000018, $03400000, $00000000
     Data.l $00000000, $00000000, $00000000, $00000000, $CECECE00, $B6B6B6B6
     Data.l $B6B6B6B6, $B6B6B6B6, $B6B6B6B6, $B6B6B6B6, $B6B6B6B6, $B6B6B6B6
     Data.l $B6B6B6B6, $B6B6B6B6, $00CECECE, $00000000, $FFDFFF00, $FFFFFFFF
     Data.l $FFFFFFFF, $FFFFFFFF, $FFFFFFFF, $FFFFFFFF, $FFFFFFFF, $FFFFFFFF
     Data.l $FFFFFFFF, $FFDFFFFF, $CEB6B6B6, $DFFFCECE, $E97E65FF, $13BD3713
     Data.l $3F1DBD37, $BF3F1DBF, $18C03C18, $3812C03C, $C0350DC2, $05C12E05
     Data.l $2C02C12E, $E8765BC0, $B6FFDFFF, $FFFFB6B6, $DE4119FF, $25DE4E25
     Data.l $5835DE4E, $E25835E2, $2CE25431, $5223E455, $E94B13E6, $0AE8430A
     Data.l $3904E843, $C02C02E0, $B6FFFFFF, $FFFFB6B6, $E24E26FF, $FFE35B3A
     Data.l $FFFFFFFF, $E25835FF, $2CE25431, $5223E455, $E94B13E6, $FFFFFFFF
     Data.l $430AFFFF, $C12E05E8, $B6FFFFFF, $FFFFB6B6, $E24E26FF, $FFE35B3A
     Data.l $FFFFFFFF, $FFFFFFFF, $37E76640, $5D2CE863, $FFFFFFE9, $FFFFFFFF
     Data.l $430AFFFF, $C12E05E8, $B6FFFFFF, $FFFFB6B6, $E25431FF, $46E56546
     Data.l $FFFFE565, $FFFFFFFF, $37FFFFFF, $FFFFE863, $FFFFFFFF, $0EFFFFFF
     Data.l $480EE948, $C0350DE9, $B6FFFFFF, $FFFFB6B6, $E45F3FFF, $50E66D50
     Data.l $7054E66D, $FFFFFFE7, $FFFFFFFF, $FFFFFFFF, $FFFFFFFF, $1CE65223
     Data.l $4B1CE04B, $C03C18E0, $B6FFFFFF, $FFFFB6B6, $E5684BFF, $5AE8755A
     Data.l $7356E875, $E66C4FE7, $FFFFFFFF, $FFFFFFFF, $E45024FF, $24DF4C1F
     Data.l $5024E450, $BF3F1DE4, $B6FFFFFF, $FFFFB6B6, $E77054FF, $62E97C62
     Data.l $755AE97C, $FFFFFFE8, $FFFFFFFF, $FFFFFFFF, $FFFFFFFF, $2CE24E26
     Data.l $502CE150, $BE4223E1, $B6FFFFFF, $FFFFB6B6, $E8785DFF, $6CEB866C
     Data.l $FFFFEB86, $FFFFFFFF, $3FFFFFFF, $FFFFE45F, $FFFFFFFF, $2CFFFFFF
     Data.l $512CE151, $BE4223E1, $B6FFFFFF, $FFFFB6B6, $E9836AFF, $FFED947E
     Data.l $FFFFFFFF, $FFFFFFFF, $48E76F53, $5F3FE567, $FFFFFFE4, $FFFFFFFF
     Data.l $5431FFFF, $BE4223E2, $B6FFFFFF, $FFFFB6B6, $E9836AFF, $FFED947E
     Data.l $FFFFFFFF, $EB866CFF, $5EE97E65, $765BE879, $E77054E8, $FFFFFFFF
     Data.l $5431FFFF, $BE4223E2, $B6FFFFFF, $FFFFB6B6, $EE9883FF, $7EF0A895
     Data.l $947EED94, $EB866CED, $5EE97E65, $765BE879, $E77054E8, $48E56848
     Data.l $5937E568, $BF4121E3, $B6FFFFFF, $DFFFB6B6, $F2B5A6FF, $65ED947E
     Data.l $7E65E97E, $E8785DE9, $53E77356, $6D50E76F, $E56748E6, $3FE45F3F
     Data.l $512CE45F, $EA8670E1, $CEFFDFFF, $0000CECE, $FFDFFF00, $FFFFFFFF
     Data.l $FFFFFFFF, $FFFFFFFF, $FFFFFFFF, $FFFFFFFF, $FFFFFFFF, $FFFFFFFF
     Data.l $FFFFFFFF, $FFDFFFFF, $00000000, $01800000, $00800000, $00000000
     Data.l $00000000, $00000000, $00000000, $00000000, $00000000, $00000000
     Data.l $00000000, $00000000, $00000000, $00000000, $00000000, $00000000
     Data.b 0, 0, -128, 3, 0, 0
  
  Fin_QuitterIco :
EndDataSection
nico
Messages : 3702
Inscription : ven. 13/févr./2004 0:57

Message par nico »

Merci à tous

Denis, ton exemple correspond à ce que je recherche, je vais essayer de le faire sans librairie, je pense qu'en déclarant la deuxième fenêtre avec les API, ça devrait aller.

Encre Merci!
Anonyme2
Messages : 3518
Inscription : jeu. 22/janv./2004 14:31
Localisation : Sourans

Message par Anonyme2 »

Oui on peut le faire avec les API, mais c'est assez simple avec la librairie de Roger. :wink:
Répondre