Seite 1 von 3

MFC-Dialoge

Verfasst: Samstag 29. März 2014, 19:29
von Malle
Hier 2 Fragen von TrommlBomml, auf die vll. Anonymissimus eine Antwort kennt (hoffe ich ;)):
TrommlBomml hat geschrieben:ich habe eine Lösung mit MFC implementiert bekommen wie bereits besprochen. Um vielleicht den Code noch etwas einfacher zu gestalten, bevor ich ihn in das BotE-Projekt integrieren möchte hab ich noch ein paar Fragen:

1) Gibt es mehrere MFC-Dialoge oder nur einen, in dem der Inhalt immer ausgetauscht wird?
2) Sind die Animationsfenster konstant, d. h. kein Objet verändert seine Position?

Ansonsten ist es auch erstmal so gestrickt, dass man problemlos auch 3D-Modelle darstellen kann. Sind bisher nur 4 Klassen für das Framework + SFML 2.1. Denke also überschaubar.

Wenn ansonsten dann alles geklärt ist, wäre es hilfreich einen einfachen Beispielzustand zu haben, wo ich mal etwas implementieren soll, damit ihr es gleich sehen und eure Meinung über die Handhabung des Frameworks mitteilen könnt.

Re: MFC-Dialoge

Verfasst: Samstag 29. März 2014, 21:27
von rainer
falls Ano keine Antwort weiß, müßte man wohl SirP kontaktieren, wobei eine PM evtl. nicht ausreicht, oder jemanden, der sich mit MFC auskennt

Re: MFC-Dialoge

Verfasst: Sonntag 30. März 2014, 00:25
von Anonymissimus
Malle hat geschrieben:1) Gibt es mehrere MFC-Dialoge oder nur einen, in dem der Inhalt immer ausgetauscht wird?
Bin mir nicht sicher, ob ich die Frage verstehe.
Tendenziell existiert für jeden UI-Bereich, wie zb die galaxy map, oder die Schiffsansicht unten, oder den Settings Dialog, eine eigene Klasse. Also vermutlich "mehrere".
Malle hat geschrieben:2) Sind die Animationsfenster konstant, d. h. kein Objet verändert seine Position?
Die Frage versteh ich nicht. Animationsfenster ?

TrommiBommi sollte am besten mal selber hier nen Account machen damit er diskutieren kann (oder wie auch immer).

Re: MFC-Dialoge

Verfasst: Sonntag 30. März 2014, 12:25
von rainer
am Account von Trommlbomel mangelt s nicht http://forum.birth-of-the-empires.de/me ... ile&u=2594

Frage 2 (ich rate mal): Wenn ein Planet angezeigt wird in der Bottomview, dann bleibt er in seinem (Fenster-)Bereich und wandert nicht hin und her...er dreht sich um seine eigene Achse

Re: MFC-Dialoge

Verfasst: Sonntag 30. März 2014, 14:31
von Anonymissimus
rainer hat geschrieben:Frage 2 (ich rate mal): Wenn ein Planet angezeigt wird in der Bottomview, dann bleibt er in seinem (Fenster-)Bereich und wandert nicht hin und her...er dreht sich um seine eigene Achse
In der Planetbottomview sind de Positionen der Planeten allerdings konstant, ja. Sobald das System einmal generiert wurde, was nur am Spielbeginn passiert.
(Sollte jemals jemand sowas wie nen Todesstern haben wollen entsteht da bestimmt ein Problem. xD)

Bei freeorion gibt es übrigens ziemlich geile Planetenanimationen, die drehen sich sehr langsam um ihre Achsen, und zwar die genaue Höhenachse.

Re: MFC-Dialoge

Verfasst: Sonntag 30. März 2014, 18:58
von Malle
ich spiel mal noch ne Weile den Mittler:
TrommlBomml hat geschrieben:Gut, anscheinend habe ich mich falsch ausgedrückt. Ich versuche es etwas deutlicher:

1) Gibt es mehrere MFC-Fenster (also richtige Win32 Fenster), zwischen denen im Spielverlauf hin- und her gewechselt wird, z.B. wenn ich von der Weltkarte zur Forschungsseite navigere oder so (wahlloses Beispiel)?

2) Mit Animationsfenster meine ich einen rechteckigen Bereich in irgend einem aktuellen UI-Bereich, in dem die Animationen für Planeten ablaufen sollen, statisch (feste Position innerhalb des rechteckigen Bereiches)?

Mir geht es eigentlich nur darum, dass meine aktuelle Lösung erfordert, für jeden Teil auf einem UI-Bereich, den man mit irgendwas animierten Darstellen möchte, dass man dafür von einer Basisklasse erbt. Wenn 95% dieser Bereiche aber statisch ist, also so lange es angezeigt wird, sich kein Objekt bewegt, kann ich eine vereinfachte Klasse erzeugen.

Re: MFC-Dialoge

Verfasst: Montag 31. März 2014, 06:41
von trommlbomml2
Ich habe einen neuen Account erzeugt weil ich an den alten nicht mehr heran kam.

Die Fragen stellen sich für mich im Wesentlichen aus Architekturgründen. Ich habe eine Lösung für die "animierten Bereiche" implementiert. Um das ganze sauber und gut in BotE integrieren zu können, sind für mich die oben genannten Fragen ziemlich wichtig. Ich möchte euch ja eine einfache, gut Wartbare und möglichst gut erweiterbare Lösung bieten!

Re: MFC-Dialoge

Verfasst: Montag 31. März 2014, 15:39
von Anonymissimus
zu 1) Jetzt weiß ich noch weniger was ich da sagen soll zu sry. Vllt solltest du das selbst anhand des codes erschließen. "Richtiges Fenster" heißt CWnd oder so ? Ich glaube schon, dass wir da von erben (über Zwischenschritte). Aber das muss man nachschauen.
zu 2) Ich nehm an, das müsste dann gehen ja. Unsere Planetenpositionen bleiben innerhalb vom PlanetBottomView immer fix.
EDIT
Planeten können auch im SmallInfoView angezeigt werden. Da gilt allerdings das gleiche. Die Animation könnte auch nur dort sein.

Re: MFC-Dialoge

Verfasst: Montag 31. März 2014, 15:49
von Malle
kurzes off-topic: rainer, hast du noch die private mailadresse von puste? Wohin geht eigentlich die admin@birth-of-the-empires Adresse, die bei heise.de verlinkt ist? Evtl. könnte man ihm bei facebook schreiben.

Re: MFC-Dialoge

Verfasst: Samstag 5. April 2014, 10:45
von rainer
admin@birth-of-the-empires geht direkt in Puste's Mailprogramm zuhause (war zumindest so)...@Malle: Rest per PM

Re: MFC-Dialoge

Verfasst: Mittwoch 9. April 2014, 12:16
von Malle
hab mal gemailt, danke Rainer.

Re: MFC-Dialoge

Verfasst: Samstag 12. April 2014, 13:35
von trommlbomml2
Ich habe mir heute den SourceCode angeschaut und konnte meine Frage selber beantworten: Es gibt mehrere Dialoge, aber nur einer ist interessant, nämlich MainDlg. Es werden dann innerhalb des Dialogs Views ausgetauscht. Ist soweit ich das sehe sehr sinvoll. Das gute ist, dass jedes CView auch ein CHwnd ist und somit sich direkt jeder View durch eine Hardwarebeschleunigte View mit SFML ersetzen kann. Leider hat das auch den Nachteil, dass der komplette View mit SFML gerendert werden muss. Das liegt einfach daran, dass SFML (auch jede andere Implementierung) nur rechteckige Bereiche rendern kann. Die Transparenz ist nicht einfach möglich, da muss man dann mit WINAPI rumfummeln, um transparente Windows-Bereiche zu bekommen. Zusätzlich ist auch die Zeichenreihenfolge gemixt GDI+ CView::OnDraw() Retained und SFML's Immediate-Drawing nicht wirklich beeinflussbar. Das macht das ganze etwas umfangreicher als gedacht.

Meiner Meinung nach wäre der richtige Weg, komplette Views mit SFML an statt GDI zu zeichnen. Das hat den Vorteil, dass man auch problemlos 3D-Grafiken rendern kann. Idealerweise würde ich in der Vererbungshierarchie direkt eine eigene Ableitung zwischenhängen, wodurch man mit SFML einfach in dem View loszeichnen kann, in dem man OnImmediateDraw() überschreiben kann. Ich denke damit ist das dann gut umsetzbar.

Die Videos hätten übrigens dasselbe Problem mit dem transparenten Rahmen, so dass das nur bei kleinen Views geht, die nur ein Video rendern.

Ich habe übrigens auch noch das Problem, dass ich nur VS2010 aufwärts habe, BotE aber VS2008 benutzt. Prinzipiell kein Problem, nur wenn ich dann etwas pushe, wirds mit der Projektdatei Problematisch. Muss ich mir 2008 noch installieren? oder ist ein Umsteig auf 2010 überlegenswert?

Re: MFC-Dialoge

Verfasst: Samstag 12. April 2014, 14:09
von Anonymissimus
BotE ist meines Wissens nicht mit 2010+ kompilierbar, da Linkerfehler mit der lzma lib auftreten. (Vermutlich - der Beweis, dass es daran liegt, dass die lzma die wir verwenden mit dem 2006er erstellt wurde, steht noch aus.)

Re: MFC-Dialoge

Verfasst: Samstag 12. April 2014, 14:24
von trommlbomml2
Ich musste es ja gezwungenermaßen mit 2010 übersetzen und hatte nur einen kleinen Fehler beim Zugriff auf einen Int-Pointer, was mit einem cast leicht zu beheben war. Ansonsten hat alles geklappt. Naja ich kann mir im Zweifel trotzdem, 2008 installieren, das gehtschon.

Re: MFC-Dialoge

Verfasst: Samstag 12. April 2014, 16:05
von rainer
BotE ist gezwungenermassen VS2008 (kostenlos, http://www.computerbase.de/downloads/sy ... udio-2008/), da wir nur dafür die MFC (kostenpflichtig) haben...also bitte kein Upgrade auf VS2010 !