티스토리 뷰
상태바
윈도우의 하단에 위치하여 프로그램의 현재 상태 정보를 보여주는 역활을 한다.
VisualStudio 프로젝트에서 자동으로 만들어 주는 기본 코드
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 |
static UINT indicators[] =
{
ID_SEPARATOR, // 상태 줄 표시기
ID_INDICATOR_CAPS,
ID_INDICATOR_NUM,
ID_INDICATOR_SCRL,
};
class CMainFrame : public CFrameWnd
{
...
protected: // 컨트롤 모음이 포함된 멤버입니다.
CStatusBar m_wndStatusBar;
};
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
...
if (!m_wndStatusBar.Create(this))
{
TRACE0("상태 표시줄을 만들지 못했습니다.\n");
return -1; // 만들지 못했습니다.
}
m_wndStatusBar.SetIndicators(indicators, sizeof(indicators)/sizeof(UINT));
} |
cs |
indicators 배열 : 구획 저의, 만약 새로운 구획을 추가/수정/삭제 하려면 이 배열 항목과 문자열 리소스를 변경하면 된다.
CStatusBar::Create() : 상태바를 생성한 후 OS에서 상태바 객체와 연결시킨다. 첫번째 인수는 상태바를 붙일 윈도우(상태바의 부모윈도우가 됨)을 지정
CStatusBar::SetIndicators() : 상태바의 구획에 해당 문자열 리소스 값으로 설정한다.
<마우스 포인터 좌표값을 상탭에 출력해주는 코드>
1. 먼저 문자열 리소스에 indicators 배열에 추가할 문자열 마우스 좌표...를 추가한다.
2. 추가한 문자열의 ID값을 선택하고 상태바의 상태를 변경하는거라서 UPDATE_COMMAND_UI 메시지 핸들러를 추가한다. 추가된 핸들러 함수는 OnUpdateIndicatorPos() 에서 상태바 상태를 갱신하도록 코드를 구현
(마우스 포인터가 움직일때마다 상태바에 좌표값을 지정해도 갱신이 안되므로 이 메시지 핸들러에서 갱신해줘야만 한다.)
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 |
static UINT indicators[] =
{
ID_SEPARATOR, // 상태 줄 표시기
ID_INDICATOR_POS, // 추가
...
};
void CMainFrame::Set상태바(int nIndex, CString str)
{
m_wndStatusBar.SetPaneText(nIndex, str);
}
#include "MainFrm.h"
void CMFCApplication4View::OnUpdateIndicatorPos(CCmdUI *pCmdUI)
{
pCmdUI->Enable(); // 상태바 갱신
}
void CMFCApplication4View::OnMouseMove(UINT nFlags, CPoint point)
{
CString str;
str.Format(L"마우스 좌표 (%4d, %4d)", point.x, point.y);
CMainFrame* pMainFrame = (CMainFrame*)AfxGetMainWnd();
pMainFrame->Set상태바(1, str); // ID_INDICATOR_POS 배열 요소값, 문자열
CView::OnMouseMove(nFlags, point);
} |
cs |