본문 바로가기

코드^학습/메모한 지식

[MFC] MDI 리본UI, APP에서 비활성 View 포인터 얻기

POSITION posTemplate = NULL, posDocument = NULL, posView = NULL;

CMultiDocTemplate* pDocTemplate = NULL;

CDocument* pDoc = NULL;

CRetouchView* pView = NULL;


// 템플릿 포지션 얻기

posTemplate = theApp.GetFirstDocTemplatePosition();

{

pDocTemplate = (CMultiDocTemplate*)GetNextDocTemplate(posTemplate); // 첫번째 템플릿


// 도큐먼트 포지션얻기

posDocument = pDocTemplate->GetFirstDocPosition();

pDoc = pDocTemplate->GetNextDoc(posDocument); // 첫번째 도큐먼트


// 뷰 포지션 얻기

posView = pDoc->GetFirstViewPosition();

pView = (CRetouchView*)pDoc->GetNextView(posView); // 도큐먼트의 뷰

pView->func1(); // 뷰

}


위의 코드는 하나의 템플릿에 하나의 도큐먼트, 하나의 뷰가 있는 형태일 경우에서

APP에서 View의 포인트를 얻는 모습입니다.


만약 다음 템플릿에서도 뷰를 얻는다면 위코드 아래에 다음템플릿을 찾아가서

템플릿 -> 도큐먼트 -> 뷰 순으로 얻으면 됩니다.


pDocTemplate = (CMultiDocTemplate*)GetNextDocTemplate(posTemplate); // 첫번째 템플릿


// 도큐먼트 포지션얻기

posDocument = pDocTemplate->GetFirstDocPosition();

pDoc = pDocTemplate->GetNextDoc(posDocument); // 첫번째 도큐먼트


// 뷰 포지션 얻기

posView = pDoc->GetFirstViewPosition();

pView = (CRetouchView*)pDoc->GetNextView(posView); // 도큐먼트의 뷰

pView->func1(); // 뷰


이런 형태입니다.

지금은 정신이 몽롱해서 이정도만 적겠습니다.


나중에 다듬어 볼게요...


정말 리본UI는 MDI 중에 신기한거 같아요...아닌가 더 편해진건가...