다음을 통해 공유


상태 표시줄(Windows 컨트롤)

상태 표시줄은 애플리케이션이 다양한 종류의 상태 정보를 표시할 수 있는 부모 창 하단에 있는 가로 창입니다. 상태 표시줄은 두 가지 이상의 정보 유형을 표시하도록 여러 부분으로 나눌 수 있습니다. 다음 스크린샷은 Microsoft Windows Paint 애플리케이션의 상태 표시줄을 보여줍니다. 이 경우 상태 표시줄에 "도움말을 보려면 도움말 메뉴에서 도움말 항목을 클릭하세요"라는 텍스트가 포함됩니다. 상태 표시줄은 도움말 텍스트 및 좌표 정보가 포함된 창 아래쪽의 영역입니다.

screen shot of the paint application, with a status bar that contains hints about online help

이 섹션에는 다음 항목이 포함됩니다.

형식 및 스타일

상태 표시줄의 기본 위치는 부모 창의 아래쪽에 있지만 부모 창의 클라이언트 영역 맨 위에 표시되도록 CCS_TOP 스타일을 지정할 수 있습니다.

상태 표시줄의 오른쪽 끝에 크기 조정 그립을 포함하도록 SBARS_SIZEGRIP 스타일을 지정할 수 있습니다.

참고

결과 크기 조정 그립이 작동하지 않으므로 CCS_TOPSBARS_SIZEGRIP 스타일을 결합하는 것은 권장되지 않습니다.

 

크기 및 높이

상태 표시줄의 창 프로시저는 CreateWindowEx 함수에 지정된 값을 무시하고 창의 초기 크기와 위치를 자동으로 설정합니다. 너비는 부모 창의 클라이언트 영역과 동일합니다. 높이는 현재 상태 표시줄의 디바이스 컨텍스트 및 창 테두리 너비에 선택된 글꼴의 메트릭을 기반으로 합니다.

창 프로시저는 WM_SIZE 메시지를 받을 때마다 상태 표시줄의 크기를 자동으로 조정합니다. 일반적으로 부모 창의 크기가 변경되면 부모는 상태 표시줄에 WM_SIZE 메시지를 보냅니다.

애플리케이션은 창에 SB_SETMINHEIGHT 메시지를 보내고 최소 높이를 픽셀 단위로 지정하여 상태 표시줄 그리기 영역의 최소 높이를 설정할 수 있습니다. 그리기 영역에는 창의 테두리가 포함되지 않습니다. 최소 높이는 소유자가 그린 상태 표시줄에서 그리는 데 유용합니다. 자세한 내용은 이 장 뒷부분에 나오는 소유자가 그린 상태 표시줄을 참조하세요.

창에 SB_GETBORDERS 메시지를 전송하여 상태 표시줄 테두리의 너비를 검색합니다. 메시지에는 너비를 받는 3개 요소 배열의 주소가 포함됩니다.

여러 부분으로 구성된 상태 표시줄

상태 표시줄에는 각각 다른 텍스트 줄을 표시하는 여러 부분이 있을 수 있습니다. 창에 SB_SETPARTS 메시지를 보내고 만들 부분의 개수와 정수 배열의 주소를 지정하여 상태 표시줄을 여러 부분으로 나눕니다. 배열은 각 부분에 대해 하나의 요소를 포함하고 각 요소는 부분의 오른쪽 가장자리의 클라이언트 좌표를 지정합니다.

상태 표시줄에는 최대 256개의 부분이 있을 수 있지만 애플리케이션에서는 일반적으로 그보다 훨씬 적게 사용합니다. 창에 SB_GETPARTS 메시지를 전송하여 상태 표시줄의 부분 개수와 각 부분의 오른쪽 가장자리 좌표를 검색합니다.

상태 표시줄 텍스트 작업

SB_SETTEXT 메시지를 보내고, 부분의 0부터 시작하는 인덱스, 부분에 그릴 문자열의 주소 및 문자열 그리기 기술을 지정하여 상태 표시줄의 모든 부분의 텍스트를 설정합니다. 그리기 기술은 텍스트에 테두리가 있는지 여부와 테두리 스타일(있는 경우)을 결정합니다. 또한 부모 창이 텍스트를 그릴 책임이 있는지 여부도 결정합니다. 자세한 내용은 아래의 소유자가 그린 상태 표시줄 섹션을 참조하세요.

기본적으로 텍스트는 상태 표시줄의 지정된 부분 내에서 왼쪽 맞춤됩니다. 텍스트에 탭 문자(\ t)를 포함하여 가운데에 맞추거나 오른쪽 맞춤할 수 있습니다. 단일 탭 문자의 오른쪽에 있는 텍스트가 가운데에 배치되고 두 번째 탭 문자 오른쪽에 있는 텍스트가 오른쪽 맞춤됩니다.

상태 표시줄에서 텍스트를 검색하려면 SB_GETTEXTLENGTHSB_GETTEXT 메시지를 사용하세요.

애플리케이션에서 한 부분만 있는 상태 표시줄을 사용하는 경우 WM_SETTEXT, WM_GETTEXTWM_GETTEXTLENGTH 메시지를 사용하여 텍스트 작업을 수행할 수 있습니다. 이러한 메시지는 인덱스가 0인 부분만 처리하므로 상태 표시줄을 정적 텍스트 컨트롤처럼 처리할 수 있습니다.

상태 표시줄을 만들지 않고 상태 표시줄을 표시하려면 DrawStatusText 함수를 사용합니다. 함수는 상태 표시줄의 창 프로시저와 동일한 기술을 사용하여 상태를 그리지만 상태 정보의 크기와 위치를 자동으로 설정하지는 않습니다. 함수를 호출할 때 상태 정보의 크기와 위치뿐만 아니라 함수를 그릴 창의 디바이스 컨텍스트를 지정해야 합니다.

소유자가 그린 상태 표시줄

상태 표시줄의 개별 부분을 소유자가 그린 부분으로 정의할 수 있습니다. 이 기술을 사용하면 창 부분의 모양보다 더 많은 제어를 얻을 수 있습니다. 예를 들어 텍스트가 아닌 비트맵을 표시하거나 다른 글꼴을 사용하여 텍스트를 그릴 수 있습니다.

소유자가 그린 창 부분으로 정의하려면 부분 및 SBT_OWNERDRAW 그리기 기술을 지정하여 SB_SETTEXT 메시지를 상태 표시줄로 보냅니다. SBT_OWNERDRAW를 지정하면 lParam 매개 변수는 부분을 그릴 때 애플리케이션에서 사용할 수 있는 32비트 애플리케이션 정의 값입니다. 예를 들어 글꼴 핸들, 비트맵 핸들, 문자열 주소 등을 지정할 수 있습니다.

상태 표시줄에서 소유자가 그린 부분을 그려야 하는 경우 부모 창에 WM_DRAWITEM 메시지를 보냅니다. 메시지의 wParam 매개 변수는 상태 표시줄의 자식 창 식별자이며 lParam 매개 변수는 DRAWITEMSTRUCT 구조체의 주소입니다. 부모 창은 구조체의 정보를 사용하여 부분을 그립니다. 상태 표시줄의 소유자가 그린 부분의 경우 DRAWITEMSTRUCT에는 다음 정보가 포함됩니다.

멤버 설명
CtlType 정의되어 있지 않습니다. 사용하지 마세요.
CtlID 상태 표시줄의 자식 창 식별자입니다.
itemID 그릴 부분의 0부터 시작하는 인덱스입니다.
itemAction 정의되어 있지 않습니다. 사용하지 마세요.
itemState 정의되어 있지 않습니다. 사용하지 마세요.
hwndItem 상태 표시줄에 대한 핸들입니다.
hDC 상태 표시줄의 디바이스 컨텍스트에 대한 핸들입니다.
rcItem 그릴 창 부분의 좌표입니다. 좌표는 상태 표시줄의 왼쪽 위 모퉁이가 기준입니다.
itemData SB_SETTEXT 메시지의 lParam 매개 변수에 지정된 애플리케이션 정의 32비트 값입니다.

 

단순 모드 상태 표시줄

상태 표시줄을 SB_SIMPLE 메시지를 전송하여 "단순 모드"에 배치합니다. 단순 모드 상태 표시줄에는 한 부분만 표시됩니다. 창의 텍스트가 설정되면 창이 무효화되지만 다음 WM_PAINT까지 다시 그려지지 않습니다. 메시지를 기다리면 창이 다시 그려지는 횟수를 최소화하여 화면 깜박임이 줄어듭니다. 간단한 모드 상태 표시줄은 사용자가 메뉴를 스크롤하는 동안 메뉴 항목에 대한 도움말 텍스트를 표시하는 데 유용합니다.

단순 모드에서 상태 표시줄이 표시하는 문자열은 비심플 모드에 있는 동안 표시되는 문자열과 별도로 유지 관리됩니다. 즉, 비심플 모드 텍스트를 변경하지 않고 창을 단순 모드로 전환하고, 텍스트를 설정하고, 비임플 모드로 다시 전환할 수 있습니다.

단순 모드 상태 표시줄의 텍스트를 설정할 때 SBT_OWNERDRAW 제외한 모든 그리기 기술을 지정할 수 있습니다. 단순 모드 상태 표시줄은 소유자 그리기를 지원하지 않습니다.

기본 상태 표시줄 메시지 처리

이 섹션에서는 미리 정의된 STATUSCLASSNAME 클래스의 창 프로시저에서 처리하는 메시지에 대해 설명합니다.

메시지 기본 처리
WM_CREATE 상태 표시줄을 초기화합니다.
WM_DESTROY 상태 표시줄에 할당된 리소스를 해제합니다.
WM_GETFONT 상태 표시줄이 텍스트를 그리는 현재 글꼴에 대한 핸들을 반환합니다.
WM_GETTEXT 상태 표시줄의 첫 번째 부분에서 버퍼로 텍스트를 복사합니다. 텍스트의 길이(문자)와 텍스트를 그리는 데 사용되는 기술을 지정하는 32비트 값을 반환합니다.
WM_GETTEXTLENGTH 상태 표시줄의 첫 번째 부분에 있는 텍스트의 길이(문자)와 텍스트를 그리는 데 사용되는 기술을 지정하는 32비트 값을 반환합니다.
WM_NCHITTEST 마우스 커서가 크기 조정 그립에 있으면 HTBOTTOMRIGHT 값을 반환하여 시스템에서 크기 조정 커서를 표시합니다. 마우스 커서가 크기 조정 그립에 없는 경우 상태 표시줄은 이 메시지를 DefWindowProc 함수에 전달합니다.
WM_PAINT 상태 표시줄의 잘못된 영역을 그립니다. wParam 매개 변수가 NULL이 아닌 경우 컨트롤은 값이 HDC라고 가정하고 해당 디바이스 컨텍스트를 사용하여 그립니다.
WM_SETFONT 상태 표시줄의 디바이스 컨텍스트에 대한 글꼴 핸들을 선택합니다.
WM_SETTEXT 기본 그리기 작업(0으로 지정됨)을 사용하여 지정된 텍스트를 상태 표시줄의 첫 번째 부분에 복사합니다. 성공하면 TRUE를 반환하고 그렇지 않으면 FALSE를 반환합니다.
WM_SIZE 부모 창의 클라이언트 영역의 현재 너비와 상태 표시줄의 현재 글꼴 높이에 따라 상태 표시줄의 크기를 조정합니다.