MFC Pane 닫기버튼 미사용시 레지스트리 초기화
Pane 이용시 닫기 버튼을 없애거나 스타일을 바꿔야 하는경우가 생긴다.
그런경우 실제로 스타일변경을 해봐도 잘 되지 않거나 처음에만 적용되고 다시 실행할경우 적용이 되지 않는 경우가 있는데..
레지스트리에 CDockingManager의 내용을 저장하기 때문인거 같다..
//탭패널 생성
CTabbedPane* pTabbedPane = new CTabbedPane(TRUE);
if(!pTabbedPane->Create(_T(""),this,CRect(0,0,255,100),TRUE,(UINT)-1, WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN | CBRS_TOP | CBRS_FLOAT_MULTI, AFX_CBRS_REGULAR_TABS, AFX_CBRS_FLOAT | AFX_CBRS_RESIZE | AFX_CBRS_AUTOHIDE))
{
return -1;
}
//패널 생성
m_networkManagerPane.Create(_T("NetworkManagerBar"),this,CRect(0,0,100,50),TRUE,1235, WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN | CBRS_TOP | CBRS_FLOAT_MULTI, AFX_CBRS_REGULAR_TABS, AFX_CBRS_FLOAT | AFX_CBRS_RESIZE | AFX_CBRS_AUTOHIDE);
위코드는 닫기버튼을 적용시키지 않은 경우이다.
AFX_CBRS_REGULAR_TABS, AFX_CBRS_FLOAT | AFX_CBRS_RESIZE | AFX_CBRS_AUTOHIDE 이부분에 AFX_CBRS_CLOSE 추가되면 닫기 버튼이 생성된다.
이렇게 한후 실행하면 한번만 적용되고 차후 실행하면 적용이 되지 않는다.
regedit에 HKEY_CURRENT_USER -> Software -> 로컬 응용 프로그램 마법사에서 생성된 응용프로그램 항목에 보면 해당 프로젝트의 프로그램명이 보이고 Workspace -> DockingManager-128 이라는 항목을 삭제하고 시작하면 한번은 다시 적용되지만 차후 실행하면 여전히 적용이 되지 않는다.
그래서 프로그램에서 레지스트리를 초기화 시켜줘야 한다.
App 부분에 InitInstance() 함수에 프레임창을 만들기전에 레지스트리를 초기화 시켜준다.
//레지스트리 초기화
CleanState();
// 주 MDI 프레임 창을 만듭니다.
CMainFrame* pMainFrame = new CMainFrame;
if (!pMainFrame || !pMainFrame->LoadFrame(IDR_MAINFRAME))
{
delete pMainFrame;
return FALSE;
}
이경우 스타일은 적용되지만 레지스트리를 초기화 했기때문에 상태바나 이런설정이 매번 다시 초기화 되니 주의해야 한다.
'Programming Lv1 > MFC' 카테고리의 다른 글
MFC MDI 창에 메세지 보내기 (0) | 2011.08.16 |
---|---|
MFC 새창열기 변경 (0) | 2011.08.16 |
MFC 바탕화면 해상도 가져오기 (0) | 2011.08.16 |
MFC Argument 가져오기 (0) | 2011.08.16 |
MFC Title bar 제거 (0) | 2011.08.16 |