Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

CSplitterWnd mit 3 Fenstern, aber wie ?

Empfohlene Antworten

Veröffentlicht

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 ?

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.

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. ;)

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)...

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.

[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 ?

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.

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. ;)

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.