Шаг 201 - Функции прямого и обратного хода CWinApp - CView

Будем пробовать обобщать прошлые данные. Итак, мы можем от CWinApp дойти до любого CView и обратно от CView до CWinApp. Давайте разложим все по полочкам. Идем туда:

// CWinApp

AfxGetApp();

	// CDocTemplate

	GetFirstDocTemplatePosition();
	GetNextDocTemplate(pos); 

		// CDocument

		GetFirstDocPosition(); 
		GetNextDoc(DocPos);

			// CView

			GetFirstViewPosition()
			GetNextView(ViewPos);

Это мы с Вами уже делали в прошлых шагах. Теперь в обратную сторону от вида :-) Для точного понимания как и куда попадем :-). Для этого создадим новый пункт в меню из прошлого проекта и привяжем его к классу вида :-)

////////////////////////////////////////////////
// CMy22View message handlers
void CMy22View::OnViewInfomdiview() 
{
	
	
}

Вот так и пойдем вверх. Первое, что мы должны получить - это к какому документу привязан вид. Это можно сделать используя функцию вида GetDocument()

//
CDocument* GetDocument( ) const;
//
void CMy22View::OnViewInfomdiview() 
{
    CDocument*  cd=GetDocument(); 
    if (cd!=NULL)
	{
		AfxMessageBox("Cool");
	}
	else AfxMessageBox("Error Document");
}

Теперь нам надо получить шаблон, в котором содержится документ. Это можно сделать воспользовавшись GetDocTemplate()

//
CDocTemplate* GetDocTemplate( ) const;  
//
void CMy22View::OnViewInfomdiview() 
{
    CDocument*  cd=GetDocument(); 
    if (cd!=NULL)
	{
		CDocTemplate* cDoc=cd->GetDocTemplate();
		if (cDoc!=NULL)
		{
			AfxMessageBox("Cool");
		}
		else AfxMessageBox("Error Template");
	}
	else AfxMessageBox("Error Document");
}

Ну, а получение CWinApp знакомое через AfxGetApp делали уже. Теперь мы можем создать схему обратного хода.

// CView

	GetDocument(); 

	// CDocument

		GetDocTemplate()
		
		//CDocTempate

			AfxGetApp(); // с любого места программы

С этого момента Вы свободны и можете двигаться в любом направлении из любого класса схемы Документ-Вид, вызывать любые функции, синхронизировать разные документы и вообще творить много чего.


Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Каев Артем - 1.07.2000