Forum: PC-Programmierung Mfc Programmierung Ansicht wechseln


von Hansi (Gast)


Lesenswert?

Guten Tag

Hab ne Frage und zwar hab ich eine Liste, die mir einige Files anzeigt.
Nun kann ich mit einem Doppelclick diese Files öffnen und wenn ich 
dieses File öffne, möchte ich im gleichen Fenster in eine andere Ansicht 
wechseln.

Kann mir jemand Inputs geben, hab keine Ideen wie ich es lösen könnte.
Ich wäre Dankbar für die Hilfe, programmiere mit C++ auf MFC Basis.

Gruss Hansi

von Hansi (Gast)


Lesenswert?

Hab nichts gefunden um nachzulesen, vielleicht kannst du mir ja eine 
Seite angeben, wo etwas darüber lesbar ist.
Die Frage war vielleicht dumm, aber die Antwort war nicht viel 
gescheiter,

Gruss Hansi

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Du möchtest also anstelle der Liste von Dateien im Fenster die Datei als 
andere Ansicht darstellen? Mach 'ne MDI-Applikation, lasse die 
Childframes maximiert anzeigen und aktiviere das durch Doppelklick 
geladene Childframe.

von Karl H. (kbuchegg)


Lesenswert?

Hansi wrote:
> Guten Tag
>
> Hab ne Frage und zwar hab ich eine Liste, die mir einige Files anzeigt.
> Nun kann ich mit einem Doppelclick diese Files öffnen und wenn ich
> dieses File öffne, möchte ich im gleichen Fenster in eine andere Ansicht
> wechseln.

Es würde helfen, wenn du sagen würdest wie das ganze realisiert
ist. Je nachdem ob sich das ganze in einem Dialog oder in einer
View abspielt, sind andere Lösungsansätze möglich.

Falls View:
Was spielt sich noch in dieser View ab? Willst du das File
nur anzeigen, oder willst du es auch verändern? Im einfachsten
Fall hat deine View 2 'Modi', die über eine View Lokale Variable
unterschieden werden. Im OnPaint Handler wird je nach eingestelltem
Modus einmal die File Liste und einmal der File Inhalt angezeigt.
Ist zwar nicht die eleganteste Lösung, funktioniert aber und ist
relativ einfach zu realisieren (für sich alleine genommen, kommt
drauf an, was sich sonst noch so im View abspielt).

Eine andere mögliche Strategie wäre es, gar keine Umschaltung
vorzunehmen, sondern die Applikation gleich so aufzubauen, dass
beides, FileListe und File Inhalt, immer gleichzeitig sichtbar
sind. Dazu würde ich mit einem Splitter das Window (je nachdem
ob das eine MDI Applikation ist oder eine SDI Applikation ist
das eine andere) in 2 Bereiche unterteilen. In den einen kommt
eine FormView hinein, in der die FileListe samt ein paar Bedien-
buttons sitzt, in der anderen eine EditView.

Möglichkeiten gibt es da mehrere. Welche davon zielführend ist,
hängt von der Art deiner Applikation ab, wie das UI zur Zeit
aussieht (vielleicht willst du ja auch einfach nur einen
FileViewer bauen. Dann könnte man das ganze als Dialogbasierte
Applikation aufziehen. Wieder mit einer File Liste und daneben
einem Edit Feld), und von deinen MFC Kenntnissen.

von FBI (Gast)


Lesenswert?

@Karl: FormView ? Hätte jetzt eher an CtrlView bzw. direkt 
ListView/TreeView gedacht. Ist aber vielleicht einfach zu lange her, daß 
ich mit der MFC rumgespielt habe :)

Ansonsten wäre eine weitere Möglichkeite, die File Liste in eine 
DialogBar zu verpacken.
Und via PropertySheet/PropertyPage ginge auch noch was.

CU

von Karl H. (kbuchegg)


Lesenswert?

FBI wrote:
> @Karl: FormView ?

Jep.
Den hatte ich diese Woche im Einsatz. Ein CFormView ist ne
feine Sache. Du erstellst im Resource Editor ein Dialog
Template (als Child, keine Border), lässt dir vom Wizard
einen FormView generieren und trägst die Resource-Id des
'Dialogs' ein. Schon stellt der View diesen 'Dialog' dar.
Alles weitere funktioniert wie in einem Dialog.
Der Vorteil ist, dass du keinen grossen Mehraufwand hast,
wenn du mehrere Controls in einem View brauchst.
Der Nachteil ist die OnSize Orgie, wenn du auf View Größen-
änderung reagieren willst.

Apropos OnSize-Orgie.
Von euch kennt niemand eine Lib, der ich Die Controls in einem
Dialog (oder einer FormView) vorwerfe, zusammen mit Layoutangaben
(wenn geht ähnlich dem Anchor-Attribut in .Net 2.0) und die
sich dann um den Resize kümmert?
Wenn nicht ists auch nicht schlimm. Bleibt die Demo halt so wie
sie ist.

> Hätte jetzt eher an CtrlView bzw. direkt
> ListView/TreeView gedacht.

Daran hab ich auch zuerst gedacht. Aber du kennst doch das
Spielchen: Der Kunde will dann noch einen 'Browse' Button
dazu. Nächste Woche möchte er dann das selektierte File löschen,
etc.

> Ist aber vielleicht einfach zu lange her, daß
> ich mit der MFC rumgespielt habe :)
>
> Ansonsten wäre eine weitere Möglichkeite, die File Liste in eine
> DialogBar zu verpacken.
> Und via PropertySheet/PropertyPage ginge auch noch was.

Yep. Viele Wege führen nach Rom.

von FBI (Gast)


Lesenswert?

> OnSize Orgie

Ooooooh jaaaaaaaa! Die kenne ich!
Besonders, wenn es nicht flackern soll und MS sich auch noch andauernd 
verrechnet. Das geht dann nur noch zu Fuß. Eigentlich könnte man die 
Controls dann auch gleich komplett selbst malen. Der Aufwand ist auch 
nicht viel größer.

Frank

PS: Du hast recht mit dem FormView. Hab grad noch gesehen, daß ich den 
auch verwendet hatte. Da drin dann die Variante mit PropertySheet und 
mehreren PropertyPage. Aber zum Glück nur jeweils ein ListCtrl pro Page. 
Eins davon dafür dann mit einigen graphischen Spielereien. Die OnPaint 
Methode war mehrere hundert Zeilen lang :)

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.