Zum Inhalt springen

CSplitterWnd mit 3 Fenstern, aber wie ?


schorschi

Empfohlene Beiträge

Hallo,

ich versuche mich gerade an einem neuen Thema: Splitter. also mehrere Zeilen bzw. Spalten bekomme ich hin. Mich interessiert nun wie ich ein Fenster in drei unterschiedliche Teile splitten kann. So wie bei einer Website mit einem 3 teiligen Frameset. Oben einen Banner über die gesammte Breite, unter dem Banner ein Fenster links und eines rechts. Ich habe zwar ein beim googlen ein paar Codeschnipsel bekommen, aber igrendwie bekomme ich es nicht am laufen:

Sys:

VC6.0

W2K

BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext)

{

CSplitterWnd m_FirstSplitter;

CSplitterWnd m_SecondSplitter;

m_FirstSplitter.CreateStatic(this, 1, 2);

m_FirstSplitter.CreateView(0,1, RUNTIME_CLASS(CDiaBanner),CSize(100, 100),pContext);

m_SecondSplitter.CreateStatic(&m_FirstSplitter, 2, 2,WS_CHILD|WS_VISIBLE,m_FirstSplitter.IdFromRowCol(0,0));

m_SecondSplitter.CreateView(1,0,RUNTIME_CLASS(CDiaLeft),CSize(100, 100), pContext);

m_SecondSplitter.CreateView(1,1,RUNTIME_CLASS(CDiaRechts),CSize(100, 100), pContext);

return true;

}

Kann mir einer von euch weiter helfen oder kennt ein geeignetes Tut. für MFC ?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Kann mir einer von euch weiter helfen

Möglicherweise, wenn du eine etwas bessere Fehlerbeschreibung lieferst als "igrendwie bekomme ich es nicht am laufen".

Grundsätzlich ist es aber Unsinn, die CSplitterWnd-Objekte als lokale Variablen in eine Methode anzulegen. Der Präfix m_ sollte dir signalisieren, dass das wohl Member sein sollen.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Moin,

Kann mir einer von euch weiter helfen oder kennt ein geeignetes Tut. für MFC ?

Hm, ein Tutorial ist es zwar nicht im eigentlichen Sinn, aber schau mal hier: >>Klick mich<<

Grundsätzlich muss ich mich aber Klotzkopp anschließen und sagen:

Quellcode abtippen ohne grundsätzliches Verstehen wird dir auf lange Sicht nichts bringen. :e@sy

PS: Codetags sind auch eine feine Sache. ;)

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hey,

[Klotzkopp]

die Variaben sind als Member deklariert, ich hatte Sie nur verdeutlichung dargestellt.

Hier kommt der Fehler:

int CFrameWnd::OnCreateHelper(LPCREATESTRUCT lpcs, CCreateContext* pContext)

{

...

RecalcLayout();

...

}

Meldung Assertion Failled

Es geht dabei wohl um die Fenstergröße, welche anscheinend nicht gültig ist.

[Hexagon]

Einfach abgetippt ist nicht richtig.

Das Beispiel, an welchem ich mich orientiert hatte, ist anders aufgebaut. Es ging mir eher um die Vorgehensweise. Laut Beispiel soll man so einen Splitter mit drei Fenstern aufbauen (können)...

Link zu diesem Kommentar
Auf anderen Seiten teilen

Meldung Assertion Failled

Es geht dabei wohl um die Fenstergröße, welche anscheinend nicht gültig ist.

Bitte nicht "wohl" und "anscheinend". Gib die Fehlermeldung genau so wieder, wie sie da steht. Bei einer Assertion bitte die genaue Stelle im Code, so wie einen Ausschnitt des Code selbst, rund um die Assertion. Hilfreich ist außerdem der Callstack (Aufrufliste) zum Zeitpunkt der fehlgeschlagenen Assertion.
Link zu diesem Kommentar
Auf anderen Seiten teilen

[Klotzkopp]

Ich bin da nicht so fit. brauchst Du die komplette Aufrufliste oder bestimmte Einträge ? Ich vermute das dieser Eintrag interessant ist :

_AfxDeferClientPos(AFX_SIZEPARENTPARAMS * 0x0012eb7c, CWnd * 0x00000000 {CWnd hWnd=???}, int 2, int 2, int 0, int 0, int 0) line 1316 + 3 bytes

CSplitterWnd::RecalcLayout() line 1478

CSplitterWnd::OnSize(unsigned int 0, int 4, int 683) line 1213

Nebenher, weiß Du eine Quelle wie ich lernen kann, mit der Aufrufliste umzugehen ?

Link zu diesem Kommentar
Auf anderen Seiten teilen

brauchst Du die komplette Aufrufliste oder bestimmte Einträge ? Ich vermute das dieser Eintrag interessant ist :
Dieser Eintrag allein hilft nicht viel weiter.

Es sieht aber so aus, als ob du mit einem CWnd-Objekt hantieren würdest, das noch gar nicht erstellt wurde. Zumindest lässt mich das der an _AfxDeferClientPos übergebene Nullzeiger vermuten.

Außerdem wären (wie bereits gesagt) die Meldung und die Sourcecodeposition der fehlgeschlagenen Assertion sowie der an dieser Stelle stehende Code interessant.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Moin again,

Nebenher, weiß Du eine Quelle wie ich lernen kann, mit der Aufrufliste umzugehen ?

bin zwar wiederum nicht Klotzkopp, aber egal.

Auch weiß ich nicht welche Entwicklungsumgebung genau Du verwendest, aber eventuell hilft Dir das hier schonmal für den Anfang: >>Klick mich<<

[Hexagon]

Einfach abgetippt ist nicht richtig.

Das Beispiel, an welchem ich mich orientiert hatte, ist anders aufgebaut. Es ging mir eher um die Vorgehensweise. Laut Beispiel soll man so einen Splitter mit drei Fenstern aufbauen (können)...

Sorry sollte kein Vorwurf sein, aber durch diese etwas eigensinnige Nomenklatur drängte sich mir irgendwie die Vermutung auf. ;)

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...