Windows/MFC

CDialog 에 Toolbar 를 추가하는 방법.

aucd29 2013. 10. 2. 17:57
1. Dialog에 Toolbar를 추가한다.
2. 툴바를 생성한다.
3. 기타 효과를 준다.

[code]
if (!m_Toolbar.CreateEx(this, TBSTYLE_FLAT,
        WS_CHILD | WS_VISIBLE | CBRS_TOP| CBRS_GRIPPER | CBRS_TOOLTIPS |
        CBRS_FLYBY | CBRS_SIZE_DYNAMIC) || !m_Toolbar.LoadToolBar(IDR_TOOLBAR1))
{
    TRACE0("Failed to create toolbar\n");
    return;
}

RepositionBars(AFX_IDW_CONTROLBAR_FIRST, AFX_IDW_CONTROLBAR_LAST, 0);

m_Toolbar.GetToolBarCtrl().SetExtendedStyle(TBSTYLE_EX_DRAWDDARROWS);
DWORD dwStyle = m_Toolbar.GetButtonStyle(m_Toolbar.CommandToIndex(IDC_VIEW));
     dwStyle |= TBSTYLE_DROPDOWN;        // 서브 메뉴를 출력시킨다.

m_Toolbar.SetButtonStyle(m_Toolbar.CommandToIndex(IDC_VIEW), dwStyle);

CImageList    imageList;
CBitmap        bitmap;

// 기본 상태일 때
bitmap.LoadBitmap(IDB_TOOLBAR1);
imageList.Create(70, 43, ILC_COLOR24|ILC_MASK, 7, 1);
imageList.Add(&bitmap, RGB(255,255,255));
m_Toolbar.SendMessage(TB_SETIMAGELIST, 0, (LPARAM)imageList.m_hImageList);
imageList.Detach();
bitmap.Detach();

// 활성화 상태일 때
bitmap.LoadBitmap(IDB_TOOLBAR2);
imageList.Create(70, 43, ILC_COLOR24|ILC_MASK, 7, 1);
imageList.Add(&bitmap, RGB(255,255,255));
m_Toolbar.SendMessage(TB_SETHOTIMAGELIST, 0, (LPARAM)imageList.m_hImageList);
imageList.Detach();
bitmap.Detach();

// 비 활성화 상태일 때
bitmap.LoadBitmap(IDB_TOOLBAR3);
imageList.Create(70, 43, ILC_COLOR24|ILC_MASK, 7, 1);
imageList.Add(&bitmap, RGB(255,255,255));
m_Toolbar.SendMessage(TB_SETDISABLEDIMAGELIST, 0, (LPARAM)imageList.m_hImageList);
imageList.Detach();
bitmap.Detach();

// 4개의 툴바를 비활성화 시킨다.
m_Toolbar.GetToolBarCtrl().EnableButton(IDC_UNCOMPRESS,    FALSE);
m_Toolbar.GetToolBarCtrl().EnableButton(IDC_ADD,        FALSE);
m_Toolbar.GetToolBarCtrl().EnableButton(IDC_DELETE,        FALSE);
m_Toolbar.GetToolBarCtrl().EnableButton(IDC_RENAME,        FALSE);[/code]