MDI Child Fenster beim Maximieren schwarz

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
double7
Beiträge: 55
Registriert: 20.09.2004 00:40
Kontaktdaten:

MDI Child Fenster beim Maximieren schwarz

Beitrag von double7 »

Hallo,

ich habe ein kleines seltsames Verhalten. Ich habe ein MDI Gadget und erstelle dort ein
weiteres Fenster. Wenn ich das Hauptfenster jedoch maximiere wird das Child Fenster schwarz angezeigt so lange bist es ausserhalb des sichbaren bereichs gezogen wird, oder ein anderes Fenster drüber liegt und dann entfernt wird. Meine Vermutung ist, dass es etwas mit dem neuzeichnen des Fensters zu tun hat, daher habe ich mal SmartWindowRefresh ausprobiert, leider ohne Erfolg.

Ich habe mehrere Win7 Rechner getestet. Bei einigen tritt das Problem auf, bei anderen nicht. Hat jemand eine Idee oder das Problem schon mal gehabt ?

Zweite kleine Frage: gibt es eine Möglichkeit den Child MDI Fenstern die Resize Möglichkeit zu nehmen, oder muss ich Größenänderungen abfangen (z.B. über WindowCallback) und das darüber machen?

Code den ich nutze um das MDI Child zu erstellen:

Code: Alles auswählen

Procedure Open_Frame_DB()
   AddGadgetItem(#MDI,#Frame_DB, "child window")
   ResizeWindow(#Frame_DB,10,10,418,39)
   WindowBounds(#Frame_DB,418,39,418,39)
   ;WindowBounds(#Frame_DB,#PB_Ignore,#PB_Ignore,#PB_Ignore,#PB_Ignore)
   ButtonGadget(#Button_saveODBC, 340, 10, 70, 20, "Speichern")
   ComboBoxGadget(#Combo_ODBC, 10, 10, 320, 20)      
EndProcedure
[0d1n6 15 n07 @ j0b 17´5 |1f357y|3
Benutzeravatar
Kiffi
Beiträge: 10711
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: MDI Child Fenster beim Maximieren schwarz

Beitrag von Kiffi »

da muss der Fehler wohl ausserhalb des von Dir geposteten Schnippsels liegen.
Schau mal, ob das hier bei Dir funktioniert (Open_Frame_DB() habe ich so von Dir übernommen):

Code: Alles auswählen

Enumeration 
  #Main
  #MDI
  #Frame_DB
  #Button_saveODBC
  #Combo_ODBC
EndEnumeration

Procedure Open_Frame_DB()
  AddGadgetItem(#MDI,#Frame_DB, "child window")
  ResizeWindow(#Frame_DB,10,10,418,39)
  WindowBounds(#Frame_DB,418,39,418,39)
  ButtonGadget(#Button_saveODBC, 340, 10, 70, 20, "Speichern")
  ComboBoxGadget(#Combo_ODBC, 10, 10, 320, 20)      
EndProcedure

OpenWindow(#Main, #PB_Ignore, #PB_Ignore, 800, 600, "", #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_MaximizeGadget | #PB_Window_MinimizeGadget)

MDIGadget(#MDI, 0, 0, 0, 0, 0, 0, #PB_MDI_AutoSize)

Open_Frame_DB()

Repeat
Until  WaitWindowEvent()=#PB_Event_CloseWindow
Grüße ... Kiffi
a²+b²=mc²
Benutzeravatar
double7
Beiträge: 55
Registriert: 20.09.2004 00:40
Kontaktdaten:

Re: MDI Child Fenster beim Maximieren schwarz

Beitrag von double7 »

Dein Beispiel läuft auf allen meiner Rechner. Auch das Fenster läßt sich nicht mehr in der Größe verändern. Sobald ich die faule Stelle habe Poste ich es hier für andere mit den selben Problem :)

Danke Kiffi

Ursache Nachtrag:
Ich benutze PureVisionXP. Die automatisch erstellte WindowCallback Prozedur verursacht das seltsame Verhalten. Sobald diese entfernt ist läuft alles wie es soll.
Zuletzt geändert von double7 am 10.07.2012 11:38, insgesamt 2-mal geändert.
[0d1n6 15 n07 @ j0b 17´5 |1f357y|3
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: MDI Child Fenster beim Maximieren schwarz

Beitrag von ts-soft »

Ich denke mal, das ein MDI-Gadget für Dein Vorhaben die falsche Wahl ist, so sieht es jedenfalls für mich aus.
Ein modales Fenster wäre wohl eher das richtige.

ResizeWindow benutzt man eigentlich nur nach einem entsprechendem Ereignis und nicht nach der Erstellung,
bzw. es wird sowieso erst dort ausgeführt.

Das Beispiel von Kiffi funktioniert auch nur scheinbar, drück mal auf maximieren, danach geht dann nicht mehr viel :mrgreen:

Mit anderen Worten: Mehr Code und mehr Hinweise, was Du bewirken möchtest, ansonsten wird es schwierig zu helfen.

Gruß
Thomas
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
double7
Beiträge: 55
Registriert: 20.09.2004 00:40
Kontaktdaten:

Re: MDI Child Fenster beim Maximieren schwarz

Beitrag von double7 »

Hi Thomas,

meine übermittelte Ursache hat sich mit deinem Post überschnitten. :)
Ich habe mich für ein MDI Child entschieden, da ich für das Projekt mit mehreren Fenstern gleichzeitig hantieren muss. Für die ODBC Einstellung ist dieses natürlich nicht notwendig, wollte aber alles gleich halten, um den User unnötiges (Um)Denken zu ersparen :) Normalerweise muss er dort eh nichts einstellen, da ich die Grundeinstellunge in einer ini im Setup mit geben werde.

Gruß D7
Zuletzt geändert von double7 am 10.07.2012 11:42, insgesamt 1-mal geändert.
[0d1n6 15 n07 @ j0b 17´5 |1f357y|3
Benutzeravatar
Kiffi
Beiträge: 10711
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: MDI Child Fenster beim Maximieren schwarz

Beitrag von Kiffi »

ts-soft hat geschrieben:Das Beispiel von Kiffi funktioniert auch nur scheinbar, drück mal auf maximieren, danach geht dann nicht mehr viel :mrgreen:
ja, Meckermotz, weil ich mir erspart habe, noch ein Menü einzubauen.

Es sollte ja auch nicht das MdiChild maximiert werden, sondern das Hauptfenster.
a²+b²=mc²
Benutzeravatar
double7
Beiträge: 55
Registriert: 20.09.2004 00:40
Kontaktdaten:

Re: MDI Child Fenster beim Maximieren schwarz

Beitrag von double7 »

Mach Dir nichts draus Kiffi :)
Mir hat das Beispiel geholfen :allright:
(Jetzt weiß ich warum es in dem Designer kein MDI Gadget gibt :) Ist aber dennoch klasse )
[0d1n6 15 n07 @ j0b 17´5 |1f357y|3
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: MDI Child Fenster beim Maximieren schwarz

Beitrag von ts-soft »

Kiffi hat geschrieben:ja, Meckermotz, weil ich mir erspart habe, noch ein Menü einzubauen.
Das mit dem Maximieren hat nicht viel mit dem Menü zu tun, das Problem ist das WindowsBounds,
das für ein MDIGadget weder gedacht noch geeignet ist, schuld liegt also nicht bei Dir.
Kiffi hat geschrieben:Es sollte ja auch nicht das MdiChild maximiert werden, sondern das Hauptfenster.
Wenn der MdiChild einen Maximieren Button enthält, sollte man damit rechnen, das dieser auch gedrückt wird :mrgreen:

Also hab ich nicht mit Dir gemotzt!

Und wenn double7 mit seinem Design zufrieden ist und der Meinung, das wäre Userfreundlich, dann halt ich lieber meinen Mund :wink:
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
double7
Beiträge: 55
Registriert: 20.09.2004 00:40
Kontaktdaten:

Re: MDI Child Fenster beim Maximieren schwarz

Beitrag von double7 »

Und wenn double7 mit seinem Design zufrieden ist und der Meinung, das wäre Userfreundlich, dann halt ich lieber meinen Mund
So war das ja gar nicht gemeint. Ich habe Deine konstruktive Kritik bereits beachtet und eingebaut (jetzt weiß ich auch was du meintest mit dem maximieren :D )

Danke euch beiden

PS: Ich habe auch schon vorher auf Dein Danke Button in der Signatur geklickt :allright:
[0d1n6 15 n07 @ j0b 17´5 |1f357y|3
Antworten