СSplitterWnd without dioc/view model?
От: Vis Украина  
Дата: 18.06.09 20:08
Оценка:
Сожно ли как-то использововать СSplitterWnd без модели документ/вид?
Еслм да, можно показать пример? Заранее спасибо.
Re: СSplitterWnd without dioc/view model?
От: aid2003  
Дата: 19.06.09 09:40
Оценка:
Здравствуйте, Vis, Вы писали:

Vis>Сожно ли как-то использововать СSplitterWnd без модели документ/вид?

Vis>Еслм да, можно показать пример? Заранее спасибо.

Можно, например если создать приложение MFC SDI без поддержки Doc/View архитектуры,
в классе CChildView создать обработчик WM_CREATE:



int CChildView::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
    if (CWnd::OnCreate(lpCreateStruct) == -1)
        return -1;

    CRect rect;
    GetClientRect(&rect);

    // create splitter
    if (!m_wndSplitter.CreateStatic(this, 2, 1))
    {
        TRACE0("Failed to create splitter!");
        return -1;
    }


    CCreateContext ccx;
    ccx.m_pNewViewClass = RUNTIME_CLASS(CHtmlView);

    // create first view
    if (!m_wndSplitter.CreateView(0, 0, RUNTIME_CLASS(CHtmlView), CSize(0,rect.Height()/2), &ccx))
    {
        TRACE0("Failed to create first splitter pane!");
        return -1;
    }

    // create second view
    ccx.m_pNewViewClass = RUNTIME_CLASS(CHtmlView);
    if (!m_wndSplitter.CreateView(1, 0, RUNTIME_CLASS(CHtmlView), CSize(100,rect.Height()/2), &ccx))
    {
        TRACE0("Failed to create second splitter pane!");
        return -1;
    }

    CHtmlView *pView1 = (CHtmlView*)m_wndSplitter.GetPane(0,0);
    CHtmlView *pView2 = (CHtmlView*)m_wndSplitter.GetPane(1,0);

    //m_pDetailsView = (CDetailsView *)m_wndSplitter.GetPane(0,0);
    //m_pChartView = (CChartView *)m_wndSplitter.GetPane(1,0);


    pView1->ShowWindow(SW_SHOW);
    pView1->OnInitialUpdate();

    pView2->ShowWindow(SW_SHOW);
    pView2->OnInitialUpdate();


    CMainFrame *pMain = (CMainFrame *)(theApp.GetMainWnd());
    pMain->SetActiveView((CView*)m_wndSplitter.GetPane(0,0));

    return 0;
}

На всякий случай почитайте зачем используется CCreateContext и вообще о внутреннем устройстве MFC.
Кстати рассмотрите возможность использования СSplitterWndEx, если используете MFC Pack 1.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.