다음을 통해 공유


상태 표시줄 창의 텍스트 업데이트

이 문서에서는 MFC 상태 막대 창에 표시되는 텍스트를 변경하는 방법을 설명합니다. CStatusBar 클래스의 창 개체인 상태 막대에는 여러 "창"이 포함되어 있습니다. 각 창은 정보를 표시하는 데 사용할 수 있는 상태 막대의 사각형 영역입니다. 예를 들어 대부분의 애플리케이션은 맨 오른쪽 창에 CAPS LOCK, NUM LOCK 및 기타 키의 상태 표시합니다. 애플리케이션은 가장 왼쪽 창(창 0)에 정보 텍스트를 표시하는 경우가 많으며, 이를 "메시지 창"이라고도 합니다. 예를 들어 기본 MFC 상태 표시줄은 메시지 창을 사용하여 현재 선택한 메뉴 항목 또는 도구 모음 단추를 설명하는 문자열을 표시합니다. 상태 표시줄의 그림에는 애플리케이션 마법사에서 만든 MFC 애플리케이션의 상태 표시줄이 표시됩니다.

기본적으로 MFC는 창을 만들 때 창을 사용하도록 설정 CStatusBar 하지 않습니다. 창을 활성화하려면 상태 막대의 각 창에 ON_UPDATE_COMMAND_UI 매크로를 사용하고 창을 업데이트해야 합니다. 창은 WM_COMMAND 메시지를 보내지 않으므로(도구 모음 단추와 같지 않음) 코드를 수동으로 입력해야 합니다.

예를 들어 한 창에 ID_INDICATOR_PAGE 명령 식별자가 있고 문서에 현재 페이지 번호가 포함되어 있다고 가정해 보겠습니다. 다음 절차에서는 상태 막대에서 새 창을 만드는 방법을 설명합니다.

새 창을 만들려면

  1. 창의 명령 ID를 정의합니다.

    보기 메뉴에서 리소스 보기를 클릭합니다. 프로젝트 리소스를 마우스 오른쪽 단추로 클릭하고 자원 기호를 클릭합니다. 리소스 기호 대화 상자에서 을 클릭합니다 New. 명령 ID 이름(예: .) ID_INDICATOR_PAGE을 입력합니다. ID 값을 지정하거나 리소스 기호 대화 상자에서 제안하는 값을 수락합니다. 예를 들어, ID_INDICATOR_PAGE기본값을 적용합니다. 리소스 기호 대화 상자를 닫습니다.

  2. 창에 표시할 기본 문자열을 정의합니다.

    리소스 뷰가 열려 있는 상태에서 애플리케이션의 리소스 유형을 나열하는 창에서 문자열 테이블을 두 번 클릭합니다. 문자열 테이블 편집기가 열려 있는 상태에서 삽입 메뉴에서 새 문자열선택합니다. 창의 명령 ID(예 ID_INDICATOR_PAGE: )를 선택하고 기본 문자열 값(예: "Page")을 입력합니다. 문자열 편집기를 닫습니다. 컴파일러 오류를 방지하려면 기본 문자열이 필요합니다.

  3. 표시기 배열에 창을 추가합니다 .

    MAINFRM 파일에 있습니다. CPP, 표시기 배열을 찾습니다 . 이 배열은 왼쪽에서 오른쪽으로 순서대로 모든 상태 막대 표시기의 명령 ID를 나열합니다. 배열의 적절한 지점에서 다음과 같이 창의 명령 ID를 ID_INDICATOR_PAGE입력합니다.

    static UINT indicators[] =
    {
       ID_SEPARATOR,           // status line indicator
       ID_INDICATOR_CAPS,
       ID_INDICATOR_NUM,
       ID_INDICATOR_SCRL,
       ID_INDICATOR_PAGE,
    };
    

창에 텍스트를 표시하는 권장 방법은 창에 대한 업데이트 처리기 함수에서 클래스 CCmdUI 의 멤버 함수를 호출 SetText 하는 것입니다. 예를 들어 현재 페이지 번호를 포함하는 정수 변수 m_nPage 설정하고 창의 텍스트를 해당 숫자의 문자열 버전으로 설정하는 데 사용할 SetText 수 있습니다.

참고 항목

SetText 방법을 사용하는 것이 좋습니다. 멤버 함수를 호출 CStatusBar 하여 약간 낮은 수준에서 이 작업을 수행할 수 있습니다 SetPaneText. 그럼에도 불구하고 여전히 업데이트 처리기가 필요합니다. 창에 대한 이러한 처리기가 없으면 MFC는 창을 자동으로 사용하지 않도록 설정하여 콘텐츠를 지워 줍니다.

다음 절차에서는 업데이트 처리기 함수를 사용하여 창에 텍스트를 표시하는 방법을 보여줍니다.

창에 텍스트를 표시하려면

  1. 명령에 대한 명령 업데이트 처리기를 추가합니다.

    여기에 표시된 대로(MAINFRM에서) 처리기에 대한 프로토타입을 ID_INDICATOR_PAGE 수동으로 추가합니다. H):

    afx_msg void OnUpdatePage(CCmdUI* pCmdUI);
    
  2. 적절한 . CPP 파일은 (MAINFRM에서) 여기에 ID_INDICATOR_PAGE 표시된 대로 처리기의 정의를 추가합니다. CPP:

    void CMainFrame::OnUpdatePage(CCmdUI* pCmdUI)
    {
       pCmdUI->Enable();
       CString strPage;
       strPage.Format(_T("Page %d"), m_nPage);
       pCmdUI->SetText(strPage);
    }
    

    이 처리기의 마지막 세 줄은 텍스트를 표시하는 코드입니다.

  3. 적절한 메시지 맵에서 여기에 표시된 대로(MAINFRM에서) ON_UPDATE_COMMAND_UI 매크로를 ID_INDICATOR_PAGE 추가합니다. CPP:

    ON_UPDATE_COMMAND_UI(ID_INDICATOR_PAGE, &CMainFrame::OnUpdatePage)
    

클래스의 m_nPage 멤버 변수 CMainFrame값을 정의한 후에는 애플리케이션이 다른 표시기를 업데이트하는 것과 동일한 방식으로 유휴 처리 중에 페이지 번호가 창에 표시됩니다. m_nPage 변경되면 다음 유휴 루프 중에 표시가 변경됩니다.

다음에 대해 자세히 알고 싶은 사항

참고 항목

MFC의 상태 표시줄 구현
CStatusBar 클래스