본문 바로가기

Windows/MFC

툴바 (Toolbar)

[code]
// CMainFrame
// OnCreate Event

// 툴바의 경우는 메뉴와 동시에 사용하기 때문에
// ID 값만 메뉴와 동일하게 주게 되면
// 해당 메세지를 동시에 실행하게 된다.
if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP
    | CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||
    !m_wndToolBar.LoadToolBar(IDR_MAINFRAME))
{
    TRACE0("Failed to create toolbar\n");
    return -1;     // fail to create
}

// 툴바에 콤보 박스 추가하기
// 먼저 툴바에 사용할 IDC_CBWIDTH ID를 추가하고
// SEPARATOR 2개를 해당 .rc 파일에 추가한다.
int nWidth = 100;
int nHeight = 125;

m_wndColorBar.SetButtonInfo(9, IDC_CBWIDTH, TBBS_SEPARATOR, nWidth);

CRect rect;
m_wndColorBar.GetItemRect(9, &rect);
rect.bottom = rect.top + nHeight;

m_ctlWidth.Create(WS_CHILD | WS_VISIBLE | WS_VSCROLL |
    CBS_DROPDOWNLIST, rect, &m_wndColorBar, IDC_CBWIDTH);
[/code]

[code]
// Fill the combo box
// 리소스 내의 스트링을 가져오기
// 리소스로 하게 되면 다중언어에 유리하다.
CString szStyle;
if (szStyle.LoadString(IDS_WIDTH_VTHIN))
    m_ctlWidth.AddString((LPCTSTR)szStyle);
if (szStyle.LoadString(IDS_WIDTH_THIN))
    m_ctlWidth.AddString((LPCTSTR)szStyle);
if (szStyle.LoadString(IDS_WIDTH_MEDIUM))
    m_ctlWidth.AddString((LPCTSTR)szStyle);
if (szStyle.LoadString(IDS_WIDTH_THICK))
    m_ctlWidth.AddString((LPCTSTR)szStyle);
if (szStyle.LoadString(IDS_WIDTH_VTHICK))
    m_ctlWidth.AddString((LPCTSTR)szStyle);
[/code]

[code]
//
// 툴바 보이기 숨기기 메뉴 만들기
// click
//
bool bV;

bV = ((m_wndColorBar.GetStyle() & WS_VISIBLE) != 0);

ShowControlBar(&m_wndColorBar, !bV, FALSE);
RecalcLayout();
[/code]

[code]
//
// update
//
pCmdUI->SetCheck(((m_wndColorBar.GetStyle() & WS_VISIBLE) != 0));
[/code]

'Windows > MFC' 카테고리의 다른 글

팝업메뉴 띄우기 (popup)  (0) 2013.10.02
Serialize  (0) 2013.10.02
자석 효과  (0) 2013.10.02
HWND_TOPMOST (최 상단으로 윈도우 위치 시키기)  (0) 2013.10.02
CString to wchar_t (type casting)  (0) 2013.10.02