본문 바로가기

Coding Note

[MFC] Changing MDI child document's title

두가지 방법이 있다.


1. 차일드 프레임을 새로 만들고 그곳에서 윈도우 타이틀을 변경한 후, AddDocTemplate 시 새로만든 차일드 프레임으로 런타임프레임 클래스를 지정해주면 된다.

(타이틀 하나 바꾸려고, 자식 도큐먼트마다 차일드프레임 클래스를 만들고싶진 않으므로 자세한 설명은 안함)


2. child document의 윈도우 생성 스타일을 조금 변경한 후, 각 차일드의 View 클래스에서 자신의 타이틀을 설정해준다.

이 방법이 가장 편한방법이며, 자세한 설명은 아래에..



("Test" 라는 이름의 프로젝트이며 "TestChild" 라는 이름의 자식 도큐먼트라고 가정)

1. ChildFrm.h 파일에 BOOL PreCreateWindow(CREATESTRUCT& cs)  의 함수를 재정의한다.


2. ChildFrm.cpp 파일에 위 함수를 구현한다.

BOOL CChildFrame::PreCreateWindow(CREATESTRUCT& cs)

{

if( !CMDIChildWndEx::PreCreateWindow(cs) )

return FALSE;


cs.style &= ~(LONG)FWS_ADDTOTITLE;    //이 플래그를 unset시켜 타이틀을 내맘대로 바꿀 수 있게한다.

return TRUE;

}


# 만약 CTestApp (메인 어플리케이션 클래스)의 AddDocTemplate 에 런타임 클래스로 다른 차일드도큐먼트를 지정했다면

   해당 클래스에서 위 1,2 작업을 진행해야한다.


3. CTestChildView.h 에 void OnInitialUpdate() 함수를 재정의한다.


4. CTestChildView.cpp 에 위 함수를 구현한다.

void CTestChildView::OnInitialUpdate(){

CFormView::OnInitialUpdate();    //상속 종류에 따라 CView 일 수도 있음

GetParent()->SetWindowTextW(_T("Changed Title"));


//..

}


5. 빌드 후 확인

'Coding Note' 카테고리의 다른 글

[ExtJs4] nested model  (0) 2013.01.01
[MFC] MDI에서 child view 접근  (0) 2012.10.17
[MFC] CDockablePane에 CFormView 올리기  (1) 2012.09.27
[winAPI] win32 i/o cancellation  (0) 2012.08.07
[MFC] MDI tab에 다른 기능의 자식 추가  (0) 2012.07.15