본문 바로가기

Visual C++/Remove Calendar

Navigation bar without Calendar in MFC

MFC 프로젝트에서 왼쪽에 네비게이션바가 있는 형태에서 달력을  제거하는 방법

적색으로 표시된 부분을 주석처리하면 된다

BOOL CMainFrame::CreateOutlookBar(CMFCOutlookBar& bar, UINT uiID, CMFCShellTreeCtrl& tree, CCalendarBar& calendar, int nInitialWidth)

{

bar.SetMode2003();


BOOL bNameValid;

CString strTemp;

bNameValid = strTemp.LoadString(IDS_SHORTCUTS);

ASSERT(bNameValid);

if (!bar.Create(strTemp, this, CRect(0, 0, nInitialWidth, 32000), uiID, WS_CHILD | WS_VISIBLE | CBRS_LEFT))

{

return FALSE; // 만들지 못했습니다.

}


CMFCOutlookBarTabCtrl* pOutlookBar = (CMFCOutlookBarTabCtrl*)bar.GetUnderlyingWindow();


if (pOutlookBar == NULL)

{

ASSERT(FALSE);

return FALSE;

}


pOutlookBar->EnableInPlaceEdit(TRUE);


static UINT uiPageID = 1;


// 움직이거나, 자동으로 숨기거나, 크기를 조정할 수 있지만 닫을 수는 없습니다.

DWORD dwStyle = AFX_CBRS_FLOAT | AFX_CBRS_AUTOHIDE | AFX_CBRS_RESIZE;


CRect rectDummy(0, 0, 0, 0);

const DWORD dwTreeStyle = WS_CHILD | WS_VISIBLE | TVS_HASLINES | TVS_LINESATROOT | TVS_HASBUTTONS;


tree.Create(dwTreeStyle, rectDummy, &bar, 1200);

bNameValid = strTemp.LoadString(IDS_FOLDERS);

ASSERT(bNameValid);

pOutlookBar->AddControl(&tree, strTemp, 2, TRUE, dwStyle);

/*

calendar.Create(rectDummy, &bar, 1201);

bNameValid = strTemp.LoadString(IDS_CALENDAR);

ASSERT(bNameValid);

pOutlookBar->AddControl(&calendar, strTemp, 3, TRUE, dwStyle);

*/

bar.SetPaneStyle(bar.GetPaneStyle() | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC);


pOutlookBar->SetImageList(theApp.m_bHiColorIcons ? IDB_PAGES_HC : IDB_PAGES, 24);

pOutlookBar->SetToolbarImageList(theApp.m_bHiColorIcons ? IDB_PAGES_SMALL_HC : IDB_PAGES_SMALL, 16);

pOutlookBar->RecalcLayout();


BOOL bAnimation = theApp.GetInt(_T("OutlookAnimation"), TRUE);

CMFCOutlookBarTabCtrl::EnableAnimation(bAnimation);


bar.SetButtonsFont(&afxGlobalData.fontBold);


return TRUE;

}