MDI Child Fenster

Anfängerfragen zum Programmieren mit PureBasic.
pureanfänger
Beiträge: 74
Registriert: 29.03.2008 15:22

MDI Child Fenster

Beitrag von pureanfänger »

Hallo Leute,

ich hänge seit ein paar Stunden schon an den folgenden beiden Problemen:

1. Ist es möglich, einem MDI Child Fenster beim Erstellen einen feste Größe zu geben ?

2. Ist es möglich, ein MDI Child Fenster an einer bestimmten Position innerhalb des MDI-Gadgets zu erstellen ?

Ich hoffe ihr habt dazu eine Idee...

Viele Grüße und einen schönen Samstag Euch allen :)
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: MDI Child Fenster

Beitrag von RSBasic »

Code: Alles auswählen

EnableExplicit

Define MDIWindowHandle

#Main = 0
#MDIChild = 1
If OpenWindow(#Main, 0, 0, 400, 300, "MDIGadget", #PB_Window_SystemMenu|#PB_Window_ScreenCentered|#PB_Window_SizeGadget|#PB_Window_MaximizeGadget)
  If CreateMenu(#Main, WindowID(#Main))
    MenuTitle("Menu index 0")
    MenuTitle("MDI windows menu")
    MenuItem(0, "self created item")
    MenuItem(1, "self created item")

    MDIGadget(0, 100, 0, 0, 0, 1, 2, #PB_MDI_AutoSize)
    AddGadgetItem(0, #MDIChild, "child window")
    UseGadgetList(WindowID(#Main))
    
    ;Handle deines MDI-Fensters ermitteln
    MDIWindowHandle = FindWindowEx_(FindWindowEx_(WindowID(#Main), 0, "MDIClient", 0), 0, "MDI_ChildClass", "child window")
    ;Feste Größe, also ohne Sizebox
    SetWindowLongPtr_(MDIWindowHandle,#GWL_STYLE,GetWindowLongPtr_(MDIWindowHandle,#GWL_STYLE)&~#WS_SIZEBOX)
    ;Position des MDI-Fensters ändern
    SetWindowPos_(MDIWindowHandle, 0,100,100,0,0,#SWP_NOSIZE|#SWP_NOZORDER|#SWP_FRAMECHANGED)
    
  EndIf
  Repeat : Until WaitWindowEvent()=#PB_Event_CloseWindow
EndIf
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
pureanfänger
Beiträge: 74
Registriert: 29.03.2008 15:22

Re: MDI Child Fenster

Beitrag von pureanfänger »

Erst mal unendlich vielen Dank!!!

Allerdings habe ich mich vorhin ein wenig ungenau ausgedrückt, was meine erste Frage angeht.
Ich meinte, ob es möglich wäre das MDI Child Fenster z.B. mit einer Größe 150x200 zu erstellen, da es sonst doch immer an die Größe des MDI-Gadgets angepasst erstellt wird.
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: MDI Child Fenster

Beitrag von RSBasic »

Code: Alles auswählen

SetWindowPos_(MDIWindowHandle, 0, 0, 0, 150, 200, #SWP_NOMOVE | #SWP_NOZORDER | #SWP_FRAMECHANGED)
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
pureanfänger
Beiträge: 74
Registriert: 29.03.2008 15:22

Re: MDI Child Fenster

Beitrag von pureanfänger »

Vielen, vielen Dank :bounce:
pureanfänger
Beiträge: 74
Registriert: 29.03.2008 15:22

Re: MDI Child Fenster

Beitrag von pureanfänger »

Habe das jetzt soweit ausprobiert und funktioniert ganz gut.

Das einzige was mir aufgefallen ist, ist das es beim Öffnen des Fensters ein wenig flimmert, da es schließlich erst groß geöffnet wird und dann erst auf die gewünschte Größe springt.

Kann man das evtl. noch umgehen? Also ich habe schon versucht das Fenster minimiert oder versteckt zu erstellen, bleibt aber leider beim gleichen Effekt.
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: MDI Child Fenster

Beitrag von RSBasic »

Wenn du in der Parameterliste des Main-Fensters "#PB_Window_Invisible" hinzufügst und zum Schluss nach der Erstellung und Änderung deiner Gadgets wieder mit "HideWindow(#Main, 0)" sichtbar machst, dann siehst du nicht mehr, dass die Größe des MDI-Fensters sich kurz ändert.
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Antworten