Nix CSplitterWnd, ich CWnd ... oder wat?
-
Hallo!
Ich will einen Datenbank-Explorer schreiben. Aus diesem Grund habe ich bei der Generierung meines Anwendungsgerüstes auf die Dokument/Ansicht-Achitektur verzichtet (brauche ja auch kein Dokument!). :p
Jetzt will ich die Hauptansicht in zwei Fenster spalten (mit CSplitterWnd). Soweit! Das Problem allerdings liegt nun offensichtlich darin, daß die der ChildView nicht mehr von einer CView-Kasse abgeleitet ist sondern von CWnd!!!

Der Ablauf der Initialisierung hat sich natrlich ebenfalls geändert, sodaß in der Funktion CMainFrame::CCreateClient kein ordnungsgemäßes *pContext übergeben wird.

Genau diesen Parameter brauche ich aber, um ein Frame splitten zu können (CSplitterWnd::CreateView).

Kann man diese Sache in etwa mit einer anderen Split-Funktion lösen, oder müssen Funktionen müssen Funktionen von CMainFrame überschrieben werden, damit ich ein vollständig initialisiertes pContext zur Verfügung habe?

Danke im Voraus
Christian
-
-
Hallo!
Schöner Code, der auch funktioniert. Vielen Dank deshalb auch!
Jedoch, gibt es nicht eine Möglichkeit, ohne Fremdcode (alleinig mit der MFC) selbigen Effekt zu erzielen? Genau das wäre nämlich meine Absicht.
Gruß Christian
-
Kannst Dir die Quellen ja mal anschauen.
Ist ein bißchen kompliziert, da sich das CSplitterWnd manchmal auf das "CView sein" verläßt, obwohl es gar nicht nötig ist.Für deine zwecke reicht sicher folgendes:
Die zuordnung zu den Panes läuft über den Dialog Control ID (siehe CSplitteWnd::IdFromRowCol). Du kannst die Panes als Child-Windows (CWnd's) ganz normal erzeugen, und gibst das CSplitterWnd als Parent an. Den Dialog Control ID mußt du nach IdFromRowCol setzen, und für jede Pane muß ein Fenster da sein. Danach nur noch RecalcLayout aufrufen...
-
Habe den Code an meine Bedürfnisse angepaßt und es funktioniert wunderbar.
Danke, Tschüs!