본문 바로가기

개발자/C#

[MFC] CWinAppEx::CleanState()

출처 : http://dev.log.mumbi.net/501

1. MFC Feature pack의 도킹 시스템( docking system )

MFC Feature pack 에서는 도킹 가능한 윈도우( window )를 생성할 수 있고, 또한 사용자는 그 윈도우를 프로그램이 제공하는 도킹 위치에 임의로 위치시킬 수 있다.

이와 같은 도킹 시스템( system )은 사용자의 편의를 위해 제공하는 기능이므로 레지스트리( registry )에 도킹된 윈도우의 정보들이 저장되고, 다시 해당 프로그램을 실행시켰을 때 레지스트리에 있는 정보를 이용해 재배치된다.

2. CWinAppEx::CleanState()

프로그램 개발자는 기본적으로 제공되는 도킹 윈도우의 레지스트리 저장 기능을 제어할 수 있는데 그 중 레지스트리에 저장된 정보를 사용하지 않고 항상 개발자가 의도한 위치에 도킹 윈도우들이 배치되게 하는 기능이 바로 CWinAppEx::Cleanstate() 이다.

3. 호출 시기.

CWinAppEx::CleanState() 이 적용되려면 특정 시기에 호출해 주어야 한다.

CWinAppEx 를 상속받은 프로젝트의 App 클래스( class )의 InitInstance() 함수이다.

그 안에서도 CWinAppEx::SetRegistryKey() 함수 호출 후, CMainFrame::LoadFrame() 호출 전에 호출해주어야 한다.

SetRegistryKey() 호출 전에 호출하게 되면 런타임 에러가 발생하고, LoadFrame() 호출 후에 호출하게 되면 CleanState() 효과가 적용되지 않는다.