MFC 툴바
툴바
메뉴 항목의 기능을 빠르게 수행하는 목적으로 사용, 메뉴 항목에 없는 기능을 독립적으로 제공 하기도 함.
리소스에 툴바 만들고 생성하는게 간단하다. 프레임 윈도우에 툴바 생성시킨다.
툴바에 이미지 그리고 속성 지정한다.
Prompt : 상태바와 툴팁에 보여줄 문자
프로젝트 만들면 Frame윈도우 클래스에 구현된 기본 생성 코드 이다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27 |
class CMainFrame : public CFrameWnd
{
...
protected:
CToolBar m_wndToolBar;
};
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
...
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("도구 모음을 만들지 못했습니다.\n");
return -1; // 만들지 못했습니다.
}
m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);
EnableDocking(CBRS_ALIGN_ANY);
DockControlBar(&m_wndToolBar);
return 0;
} |
cs |
CToolbar::CreateEx() : 툴바를 만들고 OS에서 툴바 객체와 연결시킨다. 첫번째 인자는 툴바를 붙일 윈도우(툴바의 부모 윈도우가 된다)를 지정한다.
CToolbar::LoadToolBar() : 툴바 리소스를 로드한다.
CControllBar::EnableDocking() : 컨트롤바(툴바)가 프레임 윈도우의 클라이언트 영역에 붙일 위치 지정
CBRS_ALIGN_ANY 를 사용하면 상하좌우 어디든 가능
CFrameWnd::EnableDocking() : 프레임 윈도우가 자신의 클라이언트 영역의 어디에 붙일지 위치를 허용할지 지정
CFrameWnd::DockControllBar() : 컨트롤바(툴바)를 프레임 윈도우에 실제로 붙인다.
툴바는 메뉴와 같이 WM_COMMAND 메시지가 발생한다. 그러므로 새로 만등 툴바 ID(ID_BUTTON_RED)를 선택하고 아래 그림처럼 메시지 핸들러를 추가한다.
1
2
3
4
5 |
void CMFCApplication4View::OnButtonRed()
{
m_color = RGB(255, 0, 0);
Invalidate();
} |
cs |
기본 소스는 http://petra.tistory.com/?page=2 (코드3) 참고
새로 만든 툴바 클릭하면 빨간색이 표시되고, 새로 추가한 툴바에 마우스 포인터를 두면 Prompt 속성에 지정한 문자열이 상태바와 툴팁에 나타난다.