훈, IT 공부/C,C++,MFC

[MFC]Document Template

IT훈이 2018. 4. 28.
반응형

MFC Template

https://msdn.microsoft.com/ko-kr/library/sa2c737c.aspx

MSDN 참조


GetFirstDocTemplatePosition()


구문

 POSITION GetFirshDocTemplate() const;


# 설명

Gets the position of the first document template in the application 

첫번째 문서템플릿에서 포지션을 얻어와라


# 반환값

A POSITION value that can be used for iteration or object pointer retrieval; NULL if he list is empty.

반환은 POSITION 형식으로 반복적으로 사용가능하다 혹은 객체의 포인터를 받는다. NULL 일경우에는 비어있다.


# 사용법

Use the POSITION value returned in a call to GetNextDocTemplate to get the first CDocTemplate object.

리턴된 POSTION 형식으로 GetNextDocTemplate 함수를 사용한다. GetNextDocTemplate함수는 첫 CDocTemplate Object위치를 얻는다.


 첫 위치를 얻는다는 것이 Template의 첫 위치가 아니라 템플릿의 시작점이다. C--App.cpp 에서 InitInstance() 함수에 보면 템플릿 객체를 생성하고 AddDocTemplate(템플릿 이름) 함수를 호출하는 부분이 있다.


# 필자가 사용하는 법

C---App.cpp

C---App::InitInstance()

POSITION pos = GetFirstDocTemplatePosition(); // 리턴된 값은 템플레이트의 첫 시작위치를 가르킨다.

CDocTemplate *pTemplate;


for(int i =0; i<2; i++)         // 여기서 숫자 2는 생성된 템플릿을 뜻한다.

{
pTemplate = GetNextDocTemplate(pos);    // pTemplate 는 문서템플릿 객체의 주소를 가지고 있다.
pTemplate->OpenDocumentFile(NULL);     // pTemplate가 가르키는 문서템플릿을 생성한다.
        // NULL로 설정하면 File의 Open 항목을 선택한것과 같다.
}

 InitInstance() 함수는 ProcessShellCommand 함수 대신에 OnFileNew()함수가 실행된다. 그렇기 때문에 위에서 작성한 코드들은 OnFileNew()함수에 작성하여도 좋다.


● GetNextDocTemplate()

# 구문

CDocTemplate* GetNextDocTemplate(POSITION& pos) const;


# 설명

 Gets the document template identified by pos, then set pos to the POSITION value.

 문서 템플릿의 식별하는 포지션을 얻어온다. pos는 POSITION 형식이다.


 가르키고있는 위치를 다음위치로 넘기겠다는 뜻이다. (첫 위치는 템플레이트의 첫 시작위치)


# 반환값

 A pointer to a CDocTemplate object

CDocTemplate 객체 포인터를 리턴한다. CDocTemplate 객체 포인터로 받아야한다.


실제 템플릿을 얻어온다.


MFC MDI에서 초기화면에 탭을 띄우는 프로그램 작성 하기위해 찾고 찾던중.. 정리가 되어있는곳이 없어서 혼자서 정리해보았습니다.



MDI 초기 실행화면


MFC MDI 초기화면시 탭이 2개 기본으로 추가되어있음을 확인할 수 있다.

 GetFirstDocTemplatePosition, GetNextDocTemplate, CDocTemplate 를 잘 조합하면 가능하다.





https://m.blog.naver.com/PostView.nhn?blogId=chaose21c&logNo=150133862259&proxyReferer=https%3A%2F%2Fwww.google.co.kr%2F

참조 사이트


iteration :: 반복적

retrieval :: 회수,검색



반응형

댓글