반응형

MS VS 2008부터 MFC Feature Pack을 지원합니다.


Doc-View 형태의 응용프로그램을 만들면 MFC Feature Pack에서 제공하는 OutlookBar 와 Docking Pane를 이용할 수 있습니다. OutlookBar와 Docking Pane의 레이아웃은 자동으로 저장되고 로드 됩니다.

매우 편리한 기능이긴 하지만 또한 매우 불편한 기능입니다. 물론 이 레이아웃 상태에 대해서 커스터마이징을 할 수 있는 여지를 두었군요.

MFC Feature Pack으로 Doc-VIew 응용프로그램을 생성할 시 기본 App 클래스는
CWinApp에서 CWinAppEx로 변경됩니다.
CWinAppEx에서 이 상태 저장 및 복구를 하는 군요.
CWinAppEx의 메소드 중 다음 메소드를 주의해서 보시면 됩니다.

  • CleanState(): 레이아웃 상태를 모두 초기화 한다.
  • LoadState(): 레이아웃 상태를 로드한다.
  • SaveState(): 레이아웃 상태를 저장한다.

위와 같은 메소드가 있지만 CleanState() 정도가 유용하게 쓰일 수 있을 것 같습니다.

 

CWinAppEx를 상속받은 클래스의 InitInstance()에서 SetRegistryKey() 구문 다음에 CleanState()를 호출하면 항상 레이아웃이 초기화한 상태로 표시되게 됩니다. 레이아웃을 로드하는 시점은 ProcessShellCommand()에서 프레임워크상 자동으로 로딩되게 되어 있습니다.

또한 이 레이아웃 자동 저장이 필요없다면 CWinAppEx의 다음 메소드를 오버라이딩 합니다.

virtual void OnClosingMainFrame(CFrameImpl* pFrameImpl);

기본 동작은 SaveState() 메소드를 호출합니다.

 

그러므로 레이아웃 자동저장이 되지 않게 하기 위해서는 OnClosingMainFrame()메소드를 오버라이딩하여 빈 구문으로 놓으면 레이아웃이 자동으로 저장되지 않습니다.

 

반응형

'개발 > Windows' 카테고리의 다른 글

Visual Studio 2013 로그인이 안될 경우 해결 방법  (0) 2022.08.29

+ Recent posts