SDI С несколькими представлениями

Модераторы: Hawk, Romeo, Absurd, DeeJayC, WinMain

Ответить
Aram
Сообщения: 18
Зарегистрирован: 16 апр 2007, 14:07

04 ноя 2007, 23:47

Я создал SDI приложение и хочу использовать несколько представлений.
Я написал следующий код.

Код: Выделить всё

CMainFrame::OnViewSwitch()
{
CDocument * pDoc=GetActiveDocument();
CView * pCurrView=GetActiveView();
CView * pNewView;
	If(CheckView)
{
		
pNewView=(CView *)new CView1;
CheckView=0;
}
Else
{	
pNewView=(CView *)new CView2;
CheckView=1;

}
pNewView->Create(NULL, NULL,	 AFX_WS_DEFAULT_VIEW,
			 rectDefault,
			 this, AFX_IDW_PANE_FIRST, NULL);
pNewView->ShowWindow(SW_SHOW);
pCurrView->ShowWindow(SW_HIDE);
pDoc->AddView(pNewView);

pDoc->RemoveView(pCurrView);
SetActiveView(pNewView);
pNewView->OnInitialUpdate();
RecalcLayout();
}

Все заработало, но когда я меняю представление с CView1 на CView2 или наоборот, и после этого нажимаю на кнопку «Новый документ» появляется ошибка.
Я думаю что это из-за

Код: Выделить всё

CSingleDocTemplate* pDocTemplate;
	pDocTemplate = new CSingleDocTemplate(
		IDR_MAINFRAME,
		RUNTIME_CLASS(CDisertaciyaDoc),
		RUNTIME_CLASS(CMainFrame), // main SDI frame window
		RUNTIME_CLASS(CView1));
	AddDocTemplate(pDocTemplate);

Но не могу понять как мне создать приложение с несколькими окнами представления
Аватара пользователя
Romeo
Сообщения: 3091
Зарегистрирован: 02 мар 2004, 17:25
Откуда: Крым, Севастополь
Контактная информация:

23 ноя 2007, 11:30

Зарегистируй ещё один док темплэйт. Скопируй последний участок кода и вставь его ниже и замени CView1 на CView2.
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
Ответить