티스토리 뷰

프로그래밍/MFC

MFC 상태바

에어버스 2016. 6. 22. 17:29

상태바

윈도우의 하단에 위치하여 프로그램의 현재 상태 정보를 보여주는 역활을 한다.

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

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/06   »
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 28
29 30