От:
Valeri
Дата: 18.05.01 07:29
Оценка:
Здравствуйте, все. Извините, ошибка в прошлом сообщении. Итак: подскажите, плиз, возможно ли использование CSplitterWnd в MDI (второй вид отображается при щелке по кнопке). Пытаюсь использовать код, работавший в SDI. Делаю так
BOOL CChildFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext)
{
if (!m_wndSplitter.CreateStatic(this, 1, 2))
return FALSE;
int x = GetSystemMetrics(SM_CXFULLSCREEN)/4.5;
if (!m_wndSplitter.CreateView(0, 0, RUNTIME_CLASS(CMyListView), CSize(x/*200*/, 100), pContext) ||
!m_wndSplitter.CreateView(0, 1, RUNTIME_CLASS(CtxSheetView), CSize(100, 100), pContext))
return FALSE;
theApp.m_pLeftView = (CMyListView*)m_wndSplitter.GetPane(0,0);
theApp.m_pCtxView = (CtxSheetView*)m_wndSplitter.GetPane(0,1);
m_wndSplitter.ShowWindow(SW_HIDE);
theApp.m_pCtxView->SetParent( this );
SetWindowLong(theApp.m_pCtxView->m_hWnd, GWL_ID, AFX_IDW_PANE_FIRST);
SetWindowLong(m_wndSplitter.m_hWnd, GWL_ID, AFX_IDW_PANE_SAVE);
return CMDIChildWnd::OnCreateClient(lpcs, pContext);
}
затем:
void CChildFrame::OnShowLeftView()
{
if ( m_bLeftViewVisible )
{
m_wndSplitter.ShowWindow(SW_HIDE);
theApp.m_pCtxView->SetParent( this );
SetWindowLong(theApp.m_pCtxView->m_hWnd, GWL_ID, AFX_IDW_PANE_FIRST);
SetWindowLong(m_wndSplitter.m_hWnd, GWL_ID, AFX_IDW_PANE_SAVE);
}
else
{
m_wndSplitter.ShowWindow(SW_SHOW);
theApp.m_pCtxView->SetParent( &m_wndSplitter );
SetWindowLong(theApp.m_pCtxView->m_hWnd, GWL_ID, AFX_IDW_PANE_FIRST + 1);
SetWindowLong(m_wndSplitter.m_hWnd, GWL_ID, AFX_IDW_PANE_FIRST);
m_wndSplitter.RecalcLayout( );
}
m_bLeftViewVisible = !m_bLeftViewVisible;
SendMessage(WM_SIZE);
}
и не работает... Подозреваю, что дело в AFX_IDW_PANE_FIRST (в некоторых источниках сказано, что работает только в MainFrame), но не уверена...
Заранее спасибо.
Пока на собственное сообщение не было ответов, его можно удалить.
Удалить