schorschi Geschrieben 14. Oktober 2007 Teilen Geschrieben 14. Oktober 2007 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 ? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Klotzkopp Geschrieben 15. Oktober 2007 Teilen Geschrieben 15. Oktober 2007 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. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Hexagon Geschrieben 15. Oktober 2007 Teilen Geschrieben 15. Oktober 2007 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. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
schorschi Geschrieben 15. Oktober 2007 Autor Teilen Geschrieben 15. Oktober 2007 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)... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Klotzkopp Geschrieben 15. Oktober 2007 Teilen Geschrieben 15. Oktober 2007 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. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
schorschi Geschrieben 15. Oktober 2007 Autor Teilen Geschrieben 15. Oktober 2007 [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 ? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Klotzkopp Geschrieben 16. Oktober 2007 Teilen Geschrieben 16. Oktober 2007 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. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Hexagon Geschrieben 16. Oktober 2007 Teilen Geschrieben 16. Oktober 2007 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. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
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.