S>>А дальше пробежаться по уже созданным CView, Toolbar'ам, менюшкам и т.д и пересоздать их. А компоненты, которые будут создаваться в процессе работы потом — диалоги там всякие, будут автоматом грузиться из DLL.
IT>Вот на это более всего интересно посмотреть :)
А что, в этом какая-то проблема есть?
Я когда подобное реализовывал, никаких проблем не испытал.
Можно либо вообще все пересоздать, либо просто сменить заголовки. Пересоздать проще.
Пример пересоздания тулбаров:
...
//Destroy
for(int i = 0; i < m_arrToolbars.GetSize(); i++)
{
pToolbar = (CBCGToolBar*)m_arrToolbars[i];
pToolbar->DestroyWindow();
delete pToolbar;
}:
...
//Create
for(i = 0; i < m_arrToolbarIDs.GetSize(); i++)
{
UINT nID = (UINT)m_arrToolbarIDs[i];
// create new
pToolbar = new CBCGToolBar();
if (!pToolbar->CreateEx(m_pMainFrame, TBSTYLE_FLAT, WS_CHILD |
CBRS_TOP | CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC,
CRect(1,1,1,1), AFX_IDW_TOOLBAR + nID) ||
!pToolbar->LoadToolBar(nID))
{
TRACE(_T("Failed to create view's toolbar from Resource %d\n"), nID);
delete pToolbar;
continue; // fail to create this toolbar but try others
}
ASSERT(::IsWindow(pToolbar->GetSafeHwnd()));
// set toolbar title
CString csTitle;
csTitle.LoadString(m_arrToolbarTitleIDs[i]);
pToolbar->SetWindowText(csTitle);
// cache the pointer tho the new created toolbar
m_arrToolbars.Add(pToolbar);
}
...
Главное — внимательно проследить за утечками памяти. :))
Ну и соответственно объектная модель приложения должна учитывать возможность смены интерфейса.