wxWidgets - Frames?

Übersicht BlitzMax, BlitzMax NG Allgemein

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen

 

#Reaper

Newsposter

Betreff: wxWidgets - Frames?

BeitragDo, Jan 10, 2008 13:49
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich beschäftige mich nun seit kurzem mit wxWidgets/wxMax. Habe nun endlich mal herausgefunden, wie ich ein Fenster/Frame erstelle, wo man nicht die Größe verändern kann, was mich auch freut. ^^ Nun habe ich aber wieder ein Problem. In MaxGUI ist es ja möglich, ein Fenster mit der Größe von z.B. 400x300 zu erstellen, ohne das der Rahmen etc. beachtet wird. Nur weiß ich nicht, wie ich das in wxWidgets hinbekomme. Weil wenn ich z.B. ein Button unten rechts haben will, kann es zu Problemen kommen, wenn der User einen anderen Windows oder Linux-Style benutzt.
Kann mir da jemand helfen?
Danke für die Aufmerksammkeit^^

MfG
#Reaper
AMD Athlon 64 3500+, ATI AX800 Pro/TD, 2048 MB DRR 400 von Infineon, ♥RIP♥ (2005 - Juli 2015 -> sic!)
Blitz3D, BlitzMax, MaxGUI, Monkey X; Win7
 

Dreamora

BeitragDo, Jan 10, 2008 14:06
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich empfehle im englischen Thread bzw. der Google Group dazu fragen, da die der "offizielle" Ort für wxMax Fragen sind. Hier werden nur die wenigsten dieses "Monster" nutzen Smile
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.
 

#Reaper

Newsposter

BeitragDo, Jan 10, 2008 14:31
Antworten mit Zitat
Benutzer-Profile anzeigen
Naja, ok, einen Versuch war es wert Very Happy
Werde dann mal im englischem Board ein wenig nerven Wink


Zu deinem Edit (ja, er ist mir noch aufgefallen Wink ): Ja, könnte schon sein, finde es aber allemal besser als MaxGUI Smile
AMD Athlon 64 3500+, ATI AX800 Pro/TD, 2048 MB DRR 400 von Infineon, ♥RIP♥ (2005 - Juli 2015 -> sic!)
Blitz3D, BlitzMax, MaxGUI, Monkey X; Win7
 

Dreamora

BeitragDo, Jan 10, 2008 14:52
Antworten mit Zitat
Benutzer-Profile anzeigen
Es ist mächtiger und Crossplattform konsistent, da stimm ich dir zu Smile
Aber für anfänger aufgrund der Eventhandler etc einiges schwerer zu handhaben. Die meisten rallen ja nicht mal wie EventHooks funktionieren, was eine "simple" vorstufe davon ist.

Da ich jedoch LogicUI besitze muss ich sagen, kann ich in 1h mit MaxGUI dinge erreichen die in wx leider länger dauern. Da müsste es erst eine wx Version von LogicUI geben oder einen ähnlichen editor. Das wär dann der überhammer Smile
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.
 

#Reaper

Newsposter

BeitragDo, Jan 10, 2008 15:38
Antworten mit Zitat
Benutzer-Profile anzeigen
Hmm... Schon möglich. Habe kein LogicUI, habe es allerdings mal getestet. Sowas wäre für wxMax durchaus lohnenswert, aber wäre auch sehr aufwenig, da es dort ja eben auch so sehr viele GUI-Elemente gibt Confused Very Happy
AMD Athlon 64 3500+, ATI AX800 Pro/TD, 2048 MB DRR 400 von Infineon, ♥RIP♥ (2005 - Juli 2015 -> sic!)
Blitz3D, BlitzMax, MaxGUI, Monkey X; Win7
 

Dreamora

BeitragDo, Jan 10, 2008 15:53
Antworten mit Zitat
Benutzer-Profile anzeigen
Das ist es auch für MaxGUI ...

Man muss ja nicht jeden kleinen blödsinn unterstützen, das tun ja net ma kommerzielle 100USD wx editoren.
Nur nutzen die halt nix, da die den eventhandlercode in C++ exportieren, was wertlos ist da man keine BM objekte nach extern geben kann (oder sollte wenn man net auf probleme steht)
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

Vertex

BeitragFr, Jan 11, 2008 3:14
Antworten mit Zitat
Benutzer-Profile anzeigen
Da ich so ein crossplatform GUI Ding gerade brauch...
Gibt es dafür einen hübschen kostenloser Designer? Ausprobieren kann ich es gerade noch nicht, denn MinGW ist noch kräftig mit dem Source beschäftigt ^^

Mal allgemein: vom ersten Eindruck ist wxWidget doch erstklassig designed worden. Schlüssige Klassen- und Membernamen. Da kommt man ohne viel lesen auch ganz intuitiv damit zu recht. Wie es mit dem Eventsystem aussieht, kann ich noch nicht sagen. Anscheinend gibt es dafür Makros in C++ und Brucey hat das über Funktionen gelöst.

Bin jedenfalls gespannt, wie schwer es zu bedienen ist und was es alles kann.

mfg olli
vertex.dreamfall.at | GitHub
 

Dreamora

BeitragFr, Jan 11, 2008 4:05
Antworten mit Zitat
Benutzer-Profile anzeigen
http://wxformbuilder.org/

die frage ist inwiefern wxmax das laden kann, je nachdem müsstest du das selbst implementieren.

ein weiteres problem ist das so ein oberflächen designer eigentlich wertlos ist wenn man die event callbacks / handler nicht auch direkt darin schreiben kann ... weil du dann doch wieder alles irgendwo rücknotieren musst welche events du wie wo handlen musst ... viel aufwand wenns mehr als ein fenster mit 10 buttons wird ...
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.
 

klepto2

BeitragFr, Jan 11, 2008 8:55
Antworten mit Zitat
Benutzer-Profile anzeigen
mit dem von Dreamora geposteten Editor für wxWidgets wird es bald möglich sein auch Apps für BMax zu entwickeln. Soweit ich weiß arbeitet Brucey (einfach unglaublich der Kerl) an einem Code Converter der den Output des Editors in eine BMax wxWidget konvertiert.

http://www.blitzbasic.com/Comm...opic=74927

Einfach nach wxCodeGen suchen Smile
Matrix Screensaver
Console Modul für BlitzMax
KLPacker Modul für BlitzMax

HomePage : http://www.brsoftware.de.vu

Vertex

BeitragFr, Jan 11, 2008 12:35
Antworten mit Zitat
Benutzer-Profile anzeigen
Die Examples laufen nun. Man darf halt nicht vergessen auch noch die .a Dateien aus MinGW/lib in den mod\wx.mod\lib\win32 Ordner zu kopieren(nicht alle, nur libodbc32.a, librpcrt4.a und libwinspool.a)

Danke für den Link zu wxFormBuilder! Nunja, ich will nur eine kleine Konfiguration für mein Programm damit machen(Video und Audioeinstellungen) da genügt es, den C++ Code händig zu übersetzen.

Aber mal ehrlich, der wxFormBuilder ist nicht so das gelbe vom Ei?! Wenn ich an die Zeiten von VisualBasic zurück denke - das war noch ein Formeditor. Selbst bei Visual C# Express suche ich verzweifelt nach einem Raster für die Controls. Aber bei wxFormBuilder kann ich ja nicht mal die Controls größer oder kleiner ziehen, oder die Position ändern.

Oder habe ich da was nicht verstanden? Mir kommt es so vor, dass das Layout gar über eine Art Tabellen(also das Verschachteln der SizeBoxes) abläuft. Ist dass denn ein Muss oder kann man die Positionen von Buttons etc. auch händig eingeben?

mfg olli
vertex.dreamfall.at | GitHub
 

Dreamora

BeitragFr, Jan 11, 2008 13:12
Antworten mit Zitat
Benutzer-Profile anzeigen
wx ist nicht Windows API via Visual Studio ... es läuft ein wenig anders ab um die konsistenz auf den 3 plattformen zu erreichen (speziell auf OSX wo das OS sonst alles so umsortiert wie es es gerne hätte scheiss egal was du gesetzt hast. speziell bei der grösse von elementen)

deswegen ist der editor da vermutlich relativ representativ wie das ganze in wx funktioniert ...
ist der mit abstand beste frei erhältliche editor. die anderen kosten 100 USD aufwärts
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

Vertex

BeitragFr, Jan 11, 2008 13:34
Antworten mit Zitat
Benutzer-Profile anzeigen
OK, wenn man einmal das Verständnis für das Tabellenlayout hat, dann gehts recht fließend voran.
user posted image
Mich würde übrigens mal interessiere #Reaper, wie du die Maximizebox disabelst.

mfg olli
vertex.dreamfall.at | GitHub
 

#Reaper

Newsposter

BeitragFr, Jan 11, 2008 14:11
Antworten mit Zitat
Benutzer-Profile anzeigen
Brucey hat mich vorhin auch gerade auf wxFormBuilder aufmerksam gemacht. (hier vorletzter Post von ihm)

Wie ich nun aber mit den Sizern ein Button unten rechts hinbekomme, und, dass der Button auch von der passenden Farbe umgeben wird (Panels), habe ich noch nicht hinbekommen... Bei Vertex seinem ScreenShot sieht man auch gut, was ich meine (falls das nicht beabsichtig ist).

@Vertex: Habe nach längerem suchen im Quellcode ein paar Konstanten entdeckt. Damit man nicht die Größe des Fensters ändern kann, habe ich folgende Kombination verwendet:
Code: [AUSKLAPPEN]
wxSYSTEM_MENU|wxMINIMIZE_BOX|wxCLOSE_BOX|wxCAPTION|wxCLIP_CHILDREN


Die Maximizebox ist dann auch automatisch disabled.
Für was der letzte Flag gebraucht wird, verstehe ich noch nicht ganz, ist mir aber momentan eher nicht so wichtig. Wink
Die Flags habe ich in der toplevel.h im include-Ordner von wxMax gefunden:

Code: [AUSKLAPPEN]
// style common to both wxFrame and wxDialog
#define wxSTAY_ON_TOP           0x8000
#define wxICONIZE               0x4000
#define wxMINIMIZE              wxICONIZE
#define wxMAXIMIZE              0x2000
#define wxCLOSE_BOX             0x1000

#define wxSYSTEM_MENU           0x0800
#define wxMINIMIZE_BOX          0x0400
#define wxMAXIMIZE_BOX          0x0200
#define wxTINY_CAPTION_HORIZ    0x0100
#define wxTINY_CAPTION_VERT     0x0080
#define wxRESIZE_BORDER         0x0040

[...]

#define wxDEFAULT_FRAME_STYLE \
            (wxSYSTEM_MENU | \
             wxRESIZE_BORDER | \
             wxMINIMIZE_BOX | \
             wxMAXIMIZE_BOX | \
             wxCLOSE_BOX | \
             wxCAPTION | \
             wxCLIP_CHILDREN)



PS: Irgendwie sollte ich mir angewöhnen, nicht immer so quer durcheinander zu schreiben Confused Embarassed
AMD Athlon 64 3500+, ATI AX800 Pro/TD, 2048 MB DRR 400 von Infineon, ♥RIP♥ (2005 - Juli 2015 -> sic!)
Blitz3D, BlitzMax, MaxGUI, Monkey X; Win7

Vertex

BeitragFr, Jan 11, 2008 14:51
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke dir! Im FormBuilder muss man dazu unter style zuerst wxDEFAULT_FRAME_STYLE deaktivieren und dann halt wxCAPTION, wxCLOSE_BOX, wxMINIMIZE_BOX, wxSYSTEM_MENU aktivieren.

mfg olli
vertex.dreamfall.at | GitHub
 

Dreamora

BeitragFr, Jan 11, 2008 15:01
Antworten mit Zitat
Benutzer-Profile anzeigen
das letzte Flag ist ein flag das sich auf child fenster auswirkt ... wenn ich mich net ganz irre das welches "MDI" like fenster erzeugt so das childfenster, die den bereich des hauptfensters verlassen "gecuttet" werden ...

aber net 100%ig sicher.
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.
 

#Reaper

Newsposter

BeitragFr, Jan 11, 2008 15:18
Antworten mit Zitat
Benutzer-Profile anzeigen
Hmm.. kann es sein, dass ich hunderte von Panels in einem Sizer benutzten muss, nur damit ich ein Button habe, welches von der normalen Fensterfarbe umgeben ist, habe? :-/
AMD Athlon 64 3500+, ATI AX800 Pro/TD, 2048 MB DRR 400 von Infineon, ♥RIP♥ (2005 - Juli 2015 -> sic!)
Blitz3D, BlitzMax, MaxGUI, Monkey X; Win7
 

Dreamora

BeitragFr, Jan 11, 2008 15:35
Antworten mit Zitat
Benutzer-Profile anzeigen
Nö *grinst* definitiv net
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.
 

#Reaper

Newsposter

BeitragFr, Jan 11, 2008 15:46
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich habe das Gefühl, hier will mir jemand was nicht verraten :O
*grübel*
AMD Athlon 64 3500+, ATI AX800 Pro/TD, 2048 MB DRR 400 von Infineon, ♥RIP♥ (2005 - Juli 2015 -> sic!)
Blitz3D, BlitzMax, MaxGUI, Monkey X; Win7
 

Dreamora

BeitragFr, Jan 11, 2008 16:10
Antworten mit Zitat
Benutzer-Profile anzeigen
Nö dafür müsste ich mehr mit wx gearbeitet haben. Aber da ich schon verschiedene wx apps genutzt hab und die noch liefen kanns net so sein weil die anzahl handles explodieren würde wenn du es so machen müsstest. also muss es eine sinnvollere möglichkeit geben.
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

Vertex

BeitragFr, Jan 11, 2008 16:19
Antworten mit Zitat
Benutzer-Profile anzeigen
Das ganze funktioniert so ähnlich wie beim Webdesign.

Man muss sich das so vorstellen, dass du mehrere Tabellen ineinander verschachtelst.
Bei meinem Program bspw. oben habe ich ein Fenster erstellt, dann einen vertikalen BoxSizer. Alle Controls, die in diesem BoxSizer erstellt werden, werden vertikal untereinander angeordnet. Ich habe bspw. ein Label "Video settings", ein Panel, ein Label "Audio settings", ein Label "Recorder settings" und ein drittes Panel darin erstellt.

In dem ersten Panel gibt es wieder einen vertikalen BoxSizer. Erstes Control ist ein Label "Renderer", zweites eine Combobox "OpenGL" und darunter gibt es wieder einen BoxSizer diesmal aber horizontal ausgerichtet. In dem befinden sich dann die Checkbox "Fullscreen", Label "Color depth", Combobox "32 Bit", Label "Screen frequency" und die Combobox "85 Hz"

Du merkst also, man kann die BoxSizer ineinander verschachteln. Die Controls und BoxSizer können dann noch entsprechend ausgerichtet werden(linksbündig, zentriert, rechtsbündig, oben, mittig und unten).



Code: [AUSKLAPPEN]
Windows
+---------------------------------------+
|                                       |
|                                       |
|                                       |
|                                       |
|                                       |
|                                       |
|                                       |
|                                       |
|                                       |
|                                       |
|                                       |
|                                       |
|                                       |
|                                       |
|                                       |
|                                       |
|                                       |
|                                       |
|                                       |
|                                       |
|                                       |
|                                       |
|                                       |
|                                       |
|                                       |
+---------------------------------------+

Windows
+---------------------------------------+
|BoxSizer                               |
|+-------------------------------------+|
||                                     ||
||                                     ||
||                                     ||
||                                     ||
||                                     ||
||                                     ||
||                                     ||
||                                     ||
||                                     ||
||                                     ||
||                                     ||
||                                     ||
||                                     ||
||                                     ||
||                                     ||
||                                     ||
||                                     ||
||                                     ||
||                                     ||
||                                     ||
||                                     ||
||                                     ||
|+-------------------------------------+|
+---------------------------------------+

Windows
+---------------------------------------+
|BoxSizer                               |
|+-------------------------------------+|
||Label                                ||
||Panel                                ||
||+-----------------------------------+||
|||BoxSizer                           |||
|||+---------------------------------+|||
||||Label                            ||||
||||ComboBox                         ||||
||||BoxSizer                         ||||
||||+-------------------------------+||||
|||||Chk Lbl Combo Lbl Combo        |||||
||||+-------------------------------+||||
||+-----------------------------------+||
||Label                                ||
||Panel                                ||
||+-----------------------------------+||
|||BoxSizer usw.                      |||
||+-----------------------------------+||
||Label                                ||
||Panel                                ||
||+-----------------------------------+||
|||BoxSizer usw.                      |||
||+-----------------------------------+||
|+-------------------------------------+|
+---------------------------------------+


So ungefähr habe ich das aufgebaut.

mfg olli
vertex.dreamfall.at | GitHub

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group