Re: Can SDI FormView contain a CSplitterWnd control?
I'm wondering whether the CMyFormView could invoke
CSplitterWnd::CreateStatic during OnInitialUpdate, using itself as the
parent rather than CMainFrame. Then it might do something like:
MySplitter.MoveWindow to position it to the right of the CTree?
I think I'm getting closer to something that acts like it is working. I
created a CCreateContext variable within CTestProject::OnInitialUpdate to
behave as if it were the pContext argument passed into
CMainFrame::OnCreateClient.
Here is a link to TestProject:
http://www.berbible.org/misc/TreeSplitter_081105a.zip
It seems to work, but I'm not clear if this is an ok/preferred approach.
Input appreciated.
The splitter is operational in that the dividing bar can be dragged up and
down to re-partition the space given to the upper and lower half. In the
real app, the upper and lower halves would contain independent
CRichEditCtrls that would be taller or shorter.
void CTestProjectView::OnInitialUpdate()
{
CFormView::OnInitialUpdate();
GetParentFrame()->RecalcLayout();
ResizeParentToFit();
BOOL bFlag = m_wndSplitter.CreateStatic(this, 2, 1);
if (bFlag == 0) {
::AfxMessageBox("Unable to CreateStatic");
return;
}
CCreateContext context;
context.m_pNewViewClass = NULL;
context.m_pCurrentDoc = GetDocument();
context.m_pCurrentFrame = this->GetParentFrame();
context.m_pLastView = this;
context.m_pNewDocTemplate = NULL;
// Create the view in the upper part of the splitter
bFlag = m_wndSplitter.CreateView(0, 0,
RUNTIME_CLASS(CUpperInputView),
CSize(150, 150),
&context);
if (bFlag == 0) {
::AfxMessageBox("Unable to CreateView(0, 0)");
return;
}
// Create the view in the lower part of the splitter
bFlag = m_wndSplitter.CreateView(1, 0,
RUNTIME_CLASS(CLowerInputView),
CSize(150, 150),
&context);
if (bFlag == 0) {
::AfxMessageBox("Unable to CreateView(1, 0)");
return;
}
m_wndSplitter.MoveWindow(140, 10, 300, 400, TRUE);
}