[GELÖST] MaxGUI - mehrere Fenster?
Übersicht

CO2ehemals "SirMO"Betreff: [GELÖST] MaxGUI - mehrere Fenster? |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hallo,
ich habe folgendes Problem: Für ein Programm brauche ich mehrere Fenster. Insgesamt sind es 3: Einmal das Hauptfenster, einmal ein Fenster mit einer Liste und noch ein Fenster in dem man etwas eintragen kann. Ich brauche alle 3 Fenster, egal wie ich es drehe und wende. Also habe ich alle erstmal mit CreateWindow() erstellt und dann die 2 anderen Fenster (Außer das Hauptfenster), welche nicht die ganze zeit gezeigt werden sollen mit HideGadget() ausgeblendet. Wird nun das eine Fenster über das Hauptfenster "gestartet", so zeige ich es wieder mit ShowGadget(), nun aber das Problem: Wenn ich das neu gezeigte Fenster schließen will (also oben rechts auf das X klicke), dann schließt sich das hauptfenster ebenfalls. Außerdem merkt man beim programmstart, das mehr als 1 fenster erstellt wurde (die gehideten fenster "flackern" kurz auf). ich hoffe ihr könnt mir helfen |
||
mfG, CO²
Sprachen: BlitzMax, C, C++, C#, Java Hardware: Windows 7 Ultimate 64-Bit, AMX FX-6350 (6x3,9 GHz), 32 GB RAM, Nvidia GeForce GTX 750 Ti |
- Zuletzt bearbeitet von CO2 am Di, Jan 31, 2012 20:02, insgesamt einmal bearbeitet
![]() |
Midimaster |
![]() Antworten mit Zitat ![]() |
---|---|---|
Es ist eigentlich genau "andersherum". So wie Du das beschreibst handelt es sich um Deinen Programmierfehler. Kannst Du einen kurzen Beispielcode senden?
Ich mache das in meinen Programmen ganz oft, dass mehrere Fenster offen sind und natürlich lassen sich die Tochterfenster schließen, ohne das Hauptfenster mitzureisen. Kommt aber auf den verwendeten Code an... |
||
Gewinner des BCC #53 mit "Gitarrist vs Fussballer" http://www.midimaster.de/downl...ssball.exe |
PhillipK |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Nun, ich würde da nur gering was ändern.
1) CreateWindow ist doch immer ausführbar, oder? Am besten erstmal das Fester erstellen, wenn es "gestartet" wird. 2) Das closen: Ich spiele grade selbst mit einer Maxgui rum, deswegen hab ich fix getestet, wie man mit mehreren fenstern umgehen kann. Hier mal meine abfrage, grade fix erweitert: BlitzMax: [AUSKLAPPEN] Select event_id Dh, vorher habe ich im EVENT_WINDOWCLOSE fall immer einfach nur "end" ausgeführt. Nun habe ich es grade erweitert, sodass ich 2 fenster erstelle (win ist das "hauptfenster", win2 ist das zusatzfenster) Da ich davon ausgehe, das win immer existiert, frage ich nur, ob EventSource() dem hauptfenster entspricht. Wenn ja, dann das programm beenden. Für deinen fall habe ich die Win2 abfrage eingebaut: Wenn win2 existiert und EventSource() dem 2ten fenster entspricht, soll FreeGadget ausgeführt werden. Nun, vielleicht gibt es einen bug, der src "null" sein lässt, deswegen die existenzabfrage. Sonst würde es wohl einen RuntimeError geben wenn FreeGadget(null) ausgeführt wird:) Ansonsten, wenn du das Fenster _umbedingt_ bei programmstart mit erstellen willst, versuchs mit dem style "WINDOW_HIDDEN" BlitzMax: [AUSKLAPPEN] Global win2:TGadget = CreateWindow("test 2", 0, 0, 200, 200, Null, WINDOW_HIDDEN) So wird mir zumindest kein fenster angezeigt. Allerdings konnte ich auf die schnelle nicht rausfinden, wie man es wieder sichtbar macht ![]() Dennoch rate ich: Erstell die fenster nur wenn sie benötigt werden. Lege allerdings vorher ein Type oder eine globale für die handles an. Überprüfe zusätzlich, ob die handles existieren (if win2 and src =win2 then) um fehler zu vermeiden. Edit: Midimaster: Ich denke, er machts grade wie ich es "standartmäßig" auch immer mache: Event? Window_Close? ende! Mir war bis eben auch nicht bewusst, das ich dort nach EventSource() iffen könnte ![]() ![]() |
||
CO2ehemals "SirMO" |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ok, danke euch für die antworten, der Code sieht nun wie folgt aus:
PSEUDOCODE BlitzMax: [AUSKLAPPEN] Import maxgui.drivers 'MaxGUI Importieren Mit diesem Code funktioniert alles einwandfrei! |
||
mfG, CO²
Sprachen: BlitzMax, C, C++, C#, Java Hardware: Windows 7 Ultimate 64-Bit, AMX FX-6350 (6x3,9 GHz), 32 GB RAM, Nvidia GeForce GTX 750 Ti |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group