툴바 생성
CMainFrame의 onCreate에서 제작된다.
CToolBar m_wndToolBar;
m_wndtoolBar.CreateEx함수에 의해 생성된다.
CToolBar m_wndToolBar;
if(!m_wndToolBar.Create(this) | !m_wndToolBar.LoadToolBar(IDR_MAINFRAME))
{
TRACE0("Failed to create toolbar\n");
return -1;
}
// 툴바가 크기가 변하거나 툴팁을 원하지 않으면 다음 문장을 삭제하세요.
m_wndToolBar.setBarStyle(m_wndToolBar.getBarStyle() | CBRS_TOOLTIPS |CBRS_FLYBY | CBRS_SIZE_DYNAMIC);
// 도킹할 수 있는 툴바를 원하지 않으면 다음 3문장을 삭제하세요.
m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);
EnableDocking(CBRS_ALIGN_ANY);
DockControlBar(&m_wndToolBar);
virtual BOOL CToolBar::Create(CWnd* pParentWnd, DWORD dwStyle = WS_CHILD | WS_VISIBLE | CBRS_TOP, UINT nID = AFX_IDW_TOOLBAR );
CToolBar 객체와 관련되고 (자식 윈도우) 윈도우 툴바를 생성한다.
참고주소 : http://msdn.microsoft.com/ko-kr/library/c512846k.aspx
리턴 : 성공시 TRUE, 실패시 FALSE
pParentWnd : 툴바의 부모인 윈도우의 포인터
dwStyle : 툴바 스타일. 추가적인 툴바 스타일이 있다.
- CBRS_TOP/ CBRS_BOTTOM : 프레임 윈도우 위/아래에 컨트롤 바가 위치한다.
- CBRS_NOALIGN : 컨트롤바가 부모가 크기가 변할 때 위치가 재지정되지 않는다.
- CBRS_TOOLTIPS : 컨트롤 바가 툴팁을 표시한다.
- CBRS_SIZE_DYNAMIC/CBRS_SIZE_FIXED : 컨트롤바가 동적으로 움직인다/ 고정된다.
- CBRS_FLYBY 상태바에 버튼에 관한 정보가 표시된다.
- CBRS_HIDE_INPLACE : 컨트롤바는 사용자에게 표시되지 않는다.
nID : 툴바의 자식윈도우 아이디
CToolBar::LoadToolBar
BOOL CToolBar::LoadToolBar(LPCTSTR lpszResourceName);
BOOL CToolBar::LoadToolBar(UINT nIDResource);
툴바의 리소스 이름이나 리소스아이디로 정해진 툴바를 불러온다.
참고주소 : http://msdn.microsoft.com/ko-kr/library/b7cw40t7.aspx
리턴 : 성공시 TRUE, 실패시 FALSE
lpszResourceName : 불려질 툴바의 리소스 이름을 나타내는 포인터
nIDResource : 불려질 툴바의 리소스 ID
void CControlBar::SetBarStyle(DWORD dwStyle);
컨트롤바에 대한 원하는 CBRS_ 스타일을 설정한다.
참고주소 : http://msdn.microsoft.com/ko-kr/library/f59a3skc(VS.80).aspx
DWORD CControlBar::GetBarStyle();
컨트롤바에 현재 설정된 CBRS_ 스타일을 알기 위해 호출한다.
참고주소 : http://msdn.microsoft.com/ko-kr/library/6y1e7ff1(VS.80).aspx
void CControlBar::EnableDocking(DWORD dwDockStyle)
컨트롤 바에 도킹이 가능하도록 한다.
참고주소 : http://msdn.microsoft.com/ko-kr/library/f59a3skc(VS.80).aspx
dwDockStyle
- CBRS_ALIGN_TOP, CBRS_ALIGN_BOTTOM, CBRS_ALIGN_LEFT, CBRS_ALIGN_RIGHT : 컨트롤바가 각 방향에 해당하는 곳에 도킹할 수 있도록 한다.
- CBRS_ALIGN_ANY : 컨트롤바가 어느 방향이든 도킹할 수 있도록 한다.
- CBRS_BORDER_TOP, CBRS_BORDER_BOTTOM, CBRS_BORDER_LEFT, CBRS_BORDER_RIGHT : 컨트롤 바의 경계선이 해당하는 방향에 그려지도록 한다.
- CBRS_TOOLTIPS : 툴팁이 컨트롤바에 표시되도록 한다.
- CBRS_FLYBY : 툴팁과 같은 시간에 메세지 텍스트가 갱신되도록 한다.
- CBRS_GRIPPER, CBRS_FLOAT_MULTI
void CFrameWnd::EnableDocking(DWORD dwDockStyle);
프레임 윈도우에서 도킹가능한 컨트롤바를 사용가능하도록 한다.
참고주소 : http://msdn.microsoft.com/ko-kr/library/8e547k9f(VS.80).aspx
dwDockStyle : 프레임 윈도우의 어느 쪽이 컨트롤바를 위한 도킹 면을 제공할 것인지 정한다.
- CBRS_ALIGN_TOP, CBRS_ALIGN_BOTTOM, CBRS_ALIGN_LEFT, CBRS_ALIGN_RIGHT, CBRS_ALIGN_ANY
void CFrameWnd::DockControlBar(CControlBar* pBar, UINT nDockBarID = 0, LPCRECT lpRect = NULL);
프레임 윈도우에 컨트롤 바가 도킹되도록 한다.
참고주소 : http://msdn.microsoft.com/ko-kr/library/kc9dywd6(VS.80).aspx
pBar : 도킹될 컨트롤 바의 포인터
nDockBarID : 도킹을 위해 고려될 프레임 윈도우의 어떤 면을 선택할 것인지 결정한다.
0이면 어디든 도킹될 수 있다.
- AFX_IDW_DOCKBAR_TOP, AFX_IDW_DOCKBAR_BOTTOM, AFX_IDW_DOCKBAR_LEFT, AFX_IDW_DOCKBAR_RIGHT
lpRect : 컨트롤바가 대상 프레임 윈도우에서 비작업영역 어디에 도킹될 것인지 결정한다.
툴바의 구성
리소스 : ID, Bitmap, String table
각 버튼마다 ID와 Prompt String(상태바와 툴팁의 내용)을 기입한다.
예) Prompt String 내용은 "(상태바의 내용\n툴팁의 내용)" 방식으로 입력한다.
UI 메세지 핸들러가 올 때
OnUpdate####(UPDATE_UI메세지가 발생할 때 해당 ID에 대한 메세지 핸들러)
반응을 프로그래머가 선택.
virtual void CCmdUI::Enable(BOOL bOn = TRUE);
이 명령에 대한 사용자 인터페이스 아이템을 가능/불가능하게 이 멤버 함수를 호출할 수 있다.
bOn : TRUE면 가능하고 FALSE면 불가능하게 한다.
virtual void CCmdUI::SetCheck(int nCheck = 1);
이 명령에 대한 적절한 체크 상태를 이용하여 사용자 인터페이스 아이템으로 이 멤버 함수를 호출할 수 있다.
nCheck : 0이면 체크 안함, 1이면 체크 됨, 2면 결정하지 못한 상태가 된다.
(툴바의 경우 눌린상태로 설정이 된다.)
'컴퓨터 공부 > MFC 프로그래밍' 카테고리의 다른 글
[5월 18일 2교시] 다이얼로그 (0) | 2009.05.18 |
---|---|
[5월 18일 1교시] 상태바 + 다이얼로그바 (0) | 2009.05.18 |
[5월 15일 2교시] 메뉴 3 (0) | 2009.05.15 |
[5월 15일 1교시] 메뉴 2 (0) | 2009.05.15 |
[5월 14일 3교시] GDI 2 + 메뉴 1 (0) | 2009.05.14 |