
Здраствуйте. Я конечно новичек, как на сайте так и в MFC.
Я создаю SDI приложение и указываю что нужно делать его в стиле Internet Explorer (ну есть там такая радио буттон).
Создается 2 вьюва которые наследуются один от CListView, второй от CTreeView. Оба они связаны с одним документом (см документ\вид архитектуру). То что эта связка делается где то в недрах библиотеки это понятно, но все же где и как это отображается в полученом коде? ведь по смыслу код остается тем же что для простого SDI приложения в стиле MFC.
Здравствуйте, mvd, Вы писали:
mvd>
Здраствуйте. Я конечно новичек, как на сайте так и в MFC.
mvd> То что эта связка делается где то в недрах библиотеки это понятно, но все же где и как это отображается в полученом коде? ведь по смыслу код остается тем же что для простого SDI приложения в стиле MFC.
Нет, связка создается в исходном коде сгенерированном визартом, это можно увидеть в файле главной формы("MainFrm.cpp")
BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT /*lpcs*/,
CCreateContext* pContext)
{
// создаем сплиттер
if (!m_wndSplitter.CreateStatic(this, 1, 2))
return FALSE;
/*привязываем к частям сплиттора два вьюера CLeftView:CTreeView, и CxxView:CListView */
if (!m_wndSplitter.CreateView(0, 0, RUNTIME_CLASS(CLeftView), CSize(100, 100), pContext) ||
!m_wndSplitter.CreateView(0, 1, RUNTIME_CLASS(CForum2View), CSize(100, 100), pContext))
{
m_wndSplitter.DestroyWindow();
return FALSE;
}
return TRUE;
}
И все...
Здравствуйте, alexsoff, Вы писали:
A>Нет, связка создается в исходном коде сгенерированном визартом, это можно увидеть в файле главной формы("MainFrm.cpp")
A>A>BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT /*lpcs*/,
A> CCreateContext* pContext)
A>{
A> // создаем сплиттер
A> if (!m_wndSplitter.CreateStatic(this, 1, 2))
A> return FALSE;
A> /*привязываем к частям сплиттора два вьюера CLeftView:CTreeView, и CxxView:CListView */
A> if (!m_wndSplitter.CreateView(0, 0, RUNTIME_CLASS(CLeftView), CSize(100, 100), pContext) ||
A> !m_wndSplitter.CreateView(0, 1, RUNTIME_CLASS(CForum2View), CSize(100, 100), pContext))
A> {
A> m_wndSplitter.DestroyWindow();
A> return FALSE;
A> }
A> return TRUE;
A>}
A>
A>И все...
То есть если я добавлю еще один вью в сплиттер, то функция GetDocument() этого вью будет возврящать указатель на то же документ что и у CLeftView и CForum2View?
Здравствуйте, Mikhail, Вы писали:
A>>A>>BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT /*lpcs*/,
A>> CCreateContext* pContext)
A>> ....
A>> if (!m_wndSplitter.CreateView(0, 0, RUNTIME_CLASS(CLeftView), CSize(100, 100), pContext) ||
A>> !m_wndSplitter.CreateView(0, 1, RUNTIME_CLASS(CForum2View), CSize(100, 100), pContext))
A>>
A>>И все...
M>То есть если я добавлю еще один вью в сплиттер, то функция GetDocument() этого вью будет возврящать указатель на то же документ что и у CLeftView и CForum2View?
Какой документ использовать написано в переменной CCreateContext* pContext.