Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: So Jul 20, 2025 04:55

Foren-Übersicht » Programmierung » Einsteiger-Fragen
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 20 Beiträge ]  Gehe zu Seite Vorherige  1, 2
Autor Nachricht
 Betreff des Beitrags: Re: Dialogox
BeitragVerfasst: Sa Jul 03, 2010 09:19 
Offline
DGL Member

Registriert: Do Jun 17, 2010 10:45
Beiträge: 36
Hallo Traude,
Vielen Dank für deine Antwort.

Ich dachte mir auch, dass es ganz einfache Lösungen für einen Dialog geben müsste.
Auf die Schnelle konnte ich trotzdem nichts finden.

Allerdings lässt es mir doch keine Ruhe, dass ich nicht in der Lage bin einfach auf Knopfdruck ein Fenster zu öffnen.

Gibt es eine Möglchkeit zu spionieren, wie eine Messagebox aufgeaut ist?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Dialogox
BeitragVerfasst: Sa Jul 03, 2010 10:25 
Offline
DGL Member
Benutzeravatar

Registriert: Di Okt 03, 2006 14:07
Beiträge: 1277
Wohnort: Wien
Man kann in einschlägiger OpenSource-Software stöbern (z.B. GTL, ist aber ziemlich groß). Ich hatte Delphi und konnte in der Delphi Visual Component Library nachsehen. Ich mein, die ganzen großen Bibliotheken, die Widgetsets zur Verfügung stellen - und die VCL ist auch so eine - machen ja alle das Gleiche. Es sollte Bücher dazu geben, aber ich selber kenne leider keines. Sogar ein uraltes "Turbo-Pascal" Handbuch aus dem Jahr 1992, das hier jetzt neben mir liegt, bietet bereits fertige Dialogfunktionen an.

Ich habe das so gestartet wie Du: einfach machen. Aber ich habe niemanden gefragt, denn die Programmierer, die sich mit der Lowlevel-Betriebssystem-Programmierung beschäftigen sind ziemlich selten und auch nicht besonders gesprächig: meistens kriegt man bloß ne patzige Anwort.

Was ich Dir anbieten könnte, wäre die glPasGUI, die ich geschrieben habe, die macht mehrere Fenster nebeneinander auf und zwar selbst, dh. sie liegt direkt auf dem Betriebssystem ohne irgendwelche Zwischenschichten. Aber das ist kein professionelles Programm - ich bin nur ein Hobby-Programmierer. Insbesondere habe ich keine Threads dabei.

Wie stehts denn mit Deiner IDE? Kann man die nicht benutzen? Als ich noch mit Delphi programmiert habe, habe ich für solche Zwecke eigentlich immer nur die praktischen (weil schon vorhandenen) Delphi-Dialoge benutzt.

Solltest Du auf Linux sein, gibt es KDevelop/Eclipse/Anjuta, und wenn man sich mehr Arbeit machen will gibt es auch Code::Blocks&WxWidgets(man muss es kompilieren). Aber ich kenne das nicht aus eigener Anschauung, denn ich benutze Lazarus/FreePascal.

Ein möglicher Workaround wäre ein "Pseudo"-Fenster, einfach ein OpenGL-Quad, das im Hauptfenster als oberste Schicht angezeigt wird. Das sogar die übliche Vorgangsweise in einem Spiel, auch in den professionellen Spielen.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Dialogox
BeitragVerfasst: Sa Jul 03, 2010 11:52 
Offline
DGL Member

Registriert: Do Jun 17, 2010 10:45
Beiträge: 36
Wie könnte man dann auf die Nachrichtenschleife verzichten?

Wie wird das Problem bei einer MessageBox gelöst?

gibt es eine Möglichkeit den Quellcodeiner MessageBox anzusehen?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Dialogox
BeitragVerfasst: Sa Jul 03, 2010 12:50 
Offline
DGL Member
Benutzeravatar

Registriert: Di Okt 03, 2006 14:07
Beiträge: 1277
Wohnort: Wien
Zitat:
Wie könnte man dann auf die Nachrichtenschleife verzichten?
Auf die Nachrichtenschleife kann man nicht verzichten. Es ist aber essentiell, wie man sie leitet. In meiner "ohne Threads" Anwendung lasse ich mir alle Betriebssystem-Meldungen an eine Klasse liefern, so macht das z.B. die VCL nicht: sie hat für jedes Widget eine eigene Nachrichtenschleife, denn jedes noch so kleine Ding ist dort ein Betriebssystem-Fenster. Ich mache das aber nicht so. Das Fenster hat ein Betriebssystem-"Handle". Jede Botschaft für dieses Fenster ist mit diesem Handle gekennzeichnet. Die Botschafts-Verteilungs-Klasse kann daher die jeweilige Betriebssystem-Nachricht zum richtigen Fenster weiterleiten.

Und die Widgets in den Fenstern sind bloße OpenGL-Zeichnungen, darin unterscheiden sie sich von den herkömmlichen Windows-Widgets. Die haben gar kein Betriebssystem-Handle. Das jeweilige Fenster kriegt die Botschaft übergeben und kann dann zusammen mit der Information, welches seiner Widgets jetzt gerade den Fokus hat, herausfinden, welchem Widget die Botschaft gehört.

Die Botschafts-Verteilungs-Klasse agiert dabei wie ein Sender. Dadurch wird die Nachrichtenschleife nicht unterbrochen und jedes Fenster kriegt immer noch seine eigenen Botschaften zugeschickt, weiß also, wann ein Neuzeichnen notwendig wird.

Zitat:
Wie wird das Problem bei einer MessageBox gelöst?
Das ist, wie schon oben gesagt, ein eigenes Betriebssystem-Fenster. Das Handling macht daher Windows selber. Ich hab also keine Ahnung, wie die das intern machen. Die meisten wählen diese Lösung, weil dadurch das Betriebssystem alles selber macht und man sich dabei um nichts kümmern muss. Dann sind es aber eben typische Windows-Widgets.

Zitat:
gibt es eine Möglichkeit den Quellcode deiner MessageBox anzusehen?
Es ist in der derzeitigen Version noch gar keine MessageBox drin. Ich habe zwar intern schon einen Dialog gemacht, aber der ist in der lauffähigen Version nicht drin - nicht weil er nicht funktioniert, sondern weil er grottenhässlich ist. Ich habe noch keine Zeit gehabt, das Ding zu behübschen. Ich habe derzeit nur die letzte Version, die lauffähig ist aufgehoben, weil ich seit einigen Monaten hier bei mir alles außer der GUI neu schreibe. Umsteigen auf Shader und so weiter. Hier ist alles ein Trümmerhaufen.

Ich habe aber keinen Download derzeit und daher müsste ich es Dir per EMail schicken. Ich weiß aber nicht, ob Dir der Sourcecode sehr nützt, denn man braucht vermutlich trotz Beschreibung ziemlich lange um da durchzusteigen. Im Prinzip funktioniert es so, wie ich es oben beschrieben habe. Wenn ich Dich nicht genügend abschrecken konnte, musst Du mir Deine EMail-Adresse per PN zukommen lassen und ich schick es Dir.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Dialogox
BeitragVerfasst: Sa Jul 03, 2010 15:59 
Offline
DGL Member

Registriert: Do Jun 17, 2010 10:45
Beiträge: 36
Ok. habt mich überzeugt, einfache Resourcen zu verwenden

Vielen Dank euch allen


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 20 Beiträge ]  Gehe zu Seite Vorherige  1, 2
Foren-Übersicht » Programmierung » Einsteiger-Fragen


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.006s | 15 Queries | GZIP : On ]