본문 바로가기

Windows/MFC

CToolbar, Create, RepositionBars, TBSTYLE_EX_DRAWDDARROWS, (드랍 다운 형식 툴바 만들기)

[code]void CDunzipCloneDlg::SetToolbar()
{
    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);
    
    // Using Drop-Down Buttons in a Toolbar Control
    m_Toolbar.GetToolBarCtrl().SetExtendedStyle(TBSTYLE_EX_DRAWDDARROWS);

    DWORD dwStyle;
    dwStyle = m_Toolbar.GetButtonStyle(m_Toolbar.CommandToIndex(IDC_VIEW));
    // 드랍 다운으로 옵션 변경
    m_Toolbar.SetButtonStyle(m_Toolbar.CommandToIndex(IDC_VIEW), dwStyle|TBSTYLE_DROPDOWN);

    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));
    // A handle containing the image list attached to this object.
    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_DECOMPRESS,    FALSE);
    m_Toolbar.GetToolBarCtrl().EnableButton(IDC_ADD,        FALSE);
    m_Toolbar.GetToolBarCtrl().EnableButton(IDC_DELETE,        FALSE);
    m_Toolbar.GetToolBarCtrl().EnableButton(IDC_RENAME,        FALSE);

    // 칼럼 선택시 모두 선택되게
    m_zipFiles.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES|LVS_EX_ONECLICKACTIVATE );
}
[/code]