PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : CSplitterWnd


Gast
2012-08-03, 14:24:18
Kann mir jemand weiterhelfen ?

Ich versuche gerade meine CMainFrame horizontal zu splitten.

Immer wenn ich debuge bricht VisualStudio2008 ab.

BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext)
{
// TODO: Add your specialized code here and/or call the base class
CRect rect;
this->GetClientRect(&rect);
if(!this->m_mainSplitter.CreateStatic(this,2,1))
{
MessageBox((LPCTSTR)"Das Fenster kann nicht geteilt werden !",(LPCTSTR)"Error",MB_OK|MB_ICONERROR);
return FALSE;
}

if(!this->m_mainSplitter.CreateView(1,0,RUNTIME_CLASS(OpticGraphicListView),CSize(rect.Hei ght()/2,rect.left),pContext))
{
MessageBox((LPCTSTR)"Kann View für Grafikübersicht nicht erstellen !",(LPCTSTR)"Error",MB_OK|MB_ICONERROR);
return FALSE;
}
if(!this->m_mainSplitter.CreateView(0,0,RUNTIME_CLASS(MainWorkView),CSize(rect.Height()/2,rect.left),pContext))
{
MessageBox((LPCTSTR)"Kann View für den Arbeitsbereich nicht erstellen !",(LPCTSTR)"Error",MB_OK|MB_ICONERROR);
return FALSE;
}

this->m_InitSplitter=TRUE;

return TRUE;
}

void CMainFrame::OnSize(UINT nType, int cx, int cy)
{
// TODO: Add your message handler code here

CFrameWndEx::OnSize(nType, cx, cy);
CRect rect;
this->GetWindowRect(&rect);

if(this->m_InitSplitter && nType !=SIZE_MINIMIZED)
{
this->m_mainSplitter.SetColumnInfo(0,cx,0); // an dieser Stelle wird abgebrochen.
this->m_mainSplitter.SetRowInfo(0,rect.Height()/2,50);
this->m_mainSplitter.SetRowInfo(1,rect.Height()/2,50);

this->m_mainSplitter.RecalcLayout();
}
}

Ich weiss nicht was ich falsch mache.

Ectoplasma
2012-08-03, 15:28:28
:biggrin:

Füge deinen Code doch bitte einmal in Code Blöcke ein. Sonst kann das ja keiner lesen. Danke!

So etwa:

CMainFrame::OnPaint() ...

Gast
2012-08-03, 15:58:17
Ich habe den Fehler herausgefunden.

Ich habe mit dem Debugger festgestellt, dass OnSize ausgeführt wird bevor das Fenster gesplitted wird und habe jetzt einfach eine bool Variable dazwischen geschaltet und siehe da es funktioniert.

Danke fürs anschauen.

GloomY
2012-08-04, 13:06:12
Bitte das nächstes Mal eine aussagekräftigere Beschreibung des Themas wählen - dann kann ich mein Gehirn mit diesem furchtbaren Microsoft-API Code verschonen. :ucrazy3: