Problem mit Splitterwindow
-
Ich habe eine Anwendung, in der ich 3 Views haben will, 2 auf der linken seite,
und einen (Text) auf der rechten seite. Das ganze soll eine art Textdateien-Viewer
werden.Das Splitten macht auch keine Probleme, allerdings bleiben die beiden anderen Views
auf der linken Seite ganz am Rand, und sind so quasi 'Nicht' zu sehen. Der Rechte View
nimmt den ganzen Platz ein.Mein Code:
if (!m_wndSplitter.CreateStatic(this,1, 2)|| !m_wndSplitter.CreateView(0,1, RUNTIME_CLASS(CTextView), CSize(200, 200), pContext)|| !m_wndSplitter2.CreateStatic(&m_wndSplitter,2,1,WS_CHILD|WS_VISIBLE,m_wndSplitter.IdFromRowCol(0,0))|| !m_wndSplitter2.CreateView(0,0,RUNTIME_CLASS(CLeftView), CSize(200,300),pContext)|| !m_wndSplitter2.CreateView(1,0 , RUNTIME_CLASS(CFileView), CSize(200, 300), pContext)) { m_wndSplitter.DestroyWindow(); return FALSE; }
Kann jemand helfen ?
Devil
-
Ich habe eine Lösung, da ich glaube zu wissen wo der Fehler liegt.
Das Problem liegt daran, das das Splitter eigentlich nie mit SetView einen
View zu gewiesen bekommt, da es ja die beiden Childs erhält.
Nu hab ich einen Dirty workaround gemacht, in dem ich dort erst einen View erstelle,
und ihn dann direkt wieder nach erzeugung des Splitters zerstöre :if (!m_wndSplitter.CreateStatic(this,1, 2)|| !m_wndSplitter.CreateView(0,1, RUNTIME_CLASS(CHTMLEditorView), CSize(0, 0), pContext)|| !m_wndSplitter.CreateView(0,0, RUNTIME_CLASS(CTreeView), CSize(200, 300), pContext)|| !m_wndSplitter2.CreateStatic(&m_wndSplitter,2,1,WS_CHILD|WS_VISIBLE|WS_HSCROLL,m_wndSplitter.IdFromRowCol(0,0))|| !m_wndSplitter2.CreateView(0,0,RUNTIME_CLASS(CLeftView), CSize(200,300),pContext)|| !m_wndSplitter2.CreateView(1,0 , RUNTIME_CLASS(CFileView), CSize(200, 300), pContext) ) { m_wndSplitter.DestroyWindow(); return FALSE; } m_wndSplitter.DeleteView(0,0);
Ist finde ich nicht die beste Lösung...
Wäre froh wenn es eine andere gäbe...
Devil
-
Das Beispiel in der MSDN funzt wohl nicht?
if( ...||...||...||) // deine if-Anweisung { } m_wndSplitter.SetColumnInfo(0, 200, 10); m_wndSplitter.SetColumnInfo(1, 100, 10); m_wndSplitter.RecalcLayout();