다음을 통해 공유


ToolBar 컨트롤 정보

도구 모음은 하나 이상의 단추를 포함하는 컨트롤입니다. 각 단추는 사용자가 클릭하면 부모 창에 명령 메시지를 보냅니다. 일반적으로 도구 모음에 있는 단추는 애플리케이션의 메뉴 항목과 일치하며, 사용자가 애플리케이션의 명령을 보다 직접적으로 사용할 수 있게 해줍니다.

다음 스크린샷은 파일 작업을 위한 간단한 도구 모음이 포함된 창을 보여 줍니다. 애플리케이션에서 시각적 스타일을 사용하도록 설정했습니다. 저장 단추는 스크린샷을 생성했을 때 커서가 단추를 가리키고 있었기 때문에 "핫" 단추가 됩니다. 컨트롤의 실제 모양은 운영 체제 및 사용자가 선택한 테마에 따라 다릅니다.

screen shot of a window with a three-button toolbar; one button is hot

다음 스크린샷은 시각적 스타일을 사용하지 않고 컴파일된 애플리케이션의 동일한 컨트롤을 보여 줍니다.

screen shot of a window without visual styles: none of the buttons looks hot

다음 항목에서는 도구 모음을 계획할 때 고려해야 할 기능에 대해 설명합니다. 구현에 대한 구체적인 정보와 코드 예는 도구 모음 컨트롤 사용을 참조하세요.

도구 모음 크기 및 위치 지정

CreateToolbarEx를 사용하여 도구 모음을 만드는 경우 이 함수를 사용하면 도구 모음의 높이와 너비를 픽셀 단위로 지정할 수 있습니다.

참고

CreateToolbarEx는 이미지 목록을 포함하여 도구 모음의 새로운 기능을 지원하지 않으므로 사용하지 않는 것이 좋습니다. 도구 모음 만들기에 대한 자세한 내용은 도구 모음 컨트롤 사용을 참조하세요.

 

CreateWindowEx 함수에는 도구 모음 크기를 지정하기 위한 매개 변수가 없습니다. 도구 모음 창 프로시저는 도구 모음 창의 크기와 위치를 자동으로 설정합니다. 높이는 도구 모음의 단추 높이를 기준으로 합니다. 너비는 부모 창의 클라이언트 영역 너비와 동일합니다. 자동 크기 설정을 변경하려면 TB_SETBUTTONSIZE 메시지를 보냅니다. CCS_TOPCCS_BOTTOM 공용 컨트롤 스타일은 도구 모음이 클라이언트 영역의 상단 또는 하단에 배치되는지 여부를 결정합니다. 기본적으로 도구 모음에는 CCS_TOP 스타일이 있습니다.

또한 도구 모음 창 프로시저는 WM_SIZE 또는 TB_AUTOSIZE 메시지를 수신할 때마다 도구 모음의 크기를 자동으로 조정합니다. 애플리케이션은 부모 창의 크기가 변경될 때마다 이러한 메시지 중 하나를 보내거나 도구 모음의 크기를 조정해야 하는 메시지(예: TB_SETBUTTONSIZE 메시지)를 보낸 후에 보내야 합니다.

CCS_NORESIZECCS_NOPARENTALIGN 공용 컨트롤 스타일을 설정하여 도구 모음 기본 크기 조정 및 위치 지정 동작을 끌 수 있습니다. rebar 컨트롤이 도구 모음의 크기와 위치를 지정하기 때문에 rebar 컨트롤에서 호스트된 도구 모음 컨트롤은 이러한 스타일을 설정해야 합니다.

투명한 도구 모음

도구 모음 컨트롤은 도구 모음 아래의 클라이언트 영역이 보이도록 하는 투명한 모양을 지원합니다. 두 가지 종류의 투명 도구 모음이 있습니다. 플랫 단추가 있는 것과 3차원 단추가 있는 것입니다. 애플리케이션을 Windows 인터페이스와 일치시키려면 플랫 투명 스타일 도구 모음을 사용합니다.

다음 스크린샷은 시각적 스타일을 사용하지 않는 두 종류의 투명 도구 모음을 보여 줍니다.

screen shot of two windows with different styles of toolbars, but both toolbars are transparent

다음 스크린샷은 시각적 스타일이 사용하도록 설정된 Windows Vista에 나타날 수 있는 투명한 도구 모음을 보여 줍니다. 대화 상자의 배경색이 투명도가 더 잘 보이도록 변경되었습니다.

screen shot of a window in windows vista with a transparent toolbar

투명한 도구 모음을 만들려면 CreateWindowEx의 창 스타일 매개 변수에 TBSTYLE_FLAT 또는 TBSTYLE_TRANSPARENT를 추가하기만 하면 됩니다. . 도구 모음 하단을 나타내는 선이 표시되지 않도록 하려면 WS_BORDER 창 스타일을 사용하지 마세요.

참고

시각적 스타일을 사용할 때 도구 모음은 기본적으로 플랫일 수 있습니다.

 

목록 스타일 도구 모음

도구 모음 단추를 사용하면 텍스트와 비트맵을 모두 표시할 수 있습니다. TBSTYLE_LIST 스타일로 만든 도구 모음의 단추는 텍스트를 비트맵 아래가 아닌 오른쪽에 배치합니다.

다음 스크린샷은 목록 스타일이 있는 도구 모음을 보여 줍니다.

screen shot of a toolbar with text to the right of each icon

TBSTYLE_LIST 도구 모음 스타일을 TBSTYLE_FLAT 스타일과 함께 사용하여 플랫 단추가 있는 도구 모음을 만들 수 있습니다.

단추 이미지 정의

단추의 이미지를 지정하는 방법에는 비트맵 또는 이미지 목록의 두 가지가 있습니다. 애플리케이션은 사용할 방법을 선택해야 합니다. 동일한 도구 모음 컨트롤로 두 가지 방법을 모두 사용할 수 없습니다. CreateToolbarEx 함수는 비트맵 방법을 사용합니다. 이미지 목록 방법을 사용하려는 애플리케이션은 CreateWindowEx 함수를 사용하여 도구 모음 컨트롤을 만들어야 합니다.

비트맵을 사용하여 단추 이미지 정의

도구 모음의 각 단추는 비트맵 이미지를 포함할 수 있습니다. 도구 모음은 내부 목록을 사용하여 이미지를 그리는 데 필요한 정보를 저장합니다. CreateToolbarEx 함수를 호출할 때 초기 이미지가 포함된 흑백 또는 컬러 비트맵을 지정하면 도구 모음이 내부 이미지 목록에 정보를 추가합니다. 나중에 TB_ADDBITMAP 메시지를 사용하여 이미지를 추가할 수 있습니다.

각 이미지에는 인덱스(0부터 시작)가 있습니다. 내부 목록에 추가된 첫 번째 이미지의 인덱스는 0이고 두 번째 이미지의 인덱스는 1입니다. TB_ADDBITMAP는 목록 끝에 이미지를 추가하고 추가한 첫 번째 새 이미지의 인덱스를 반환합니다. 이미지를 단추와 연결하려면 내부 이미지 목록에 비트맵을 추가한 후 TB_ADDBUTTONS 메시지를 보내고 이미지 인덱스를 지정해야 합니다.

Windows는 도구 모음의 비트맵 이미지가 모두 같은 크기라고 가정합니다. CreateToolbarEx를 사용하여 도구 모음을 만들 때 크기를 지정합니다. CreateWindowEx 함수를 사용하여 도구 모음을 만드는 경우 이미지 크기는 기본 크기인 16x15 픽셀로 설정됩니다. TB_SETBITMAPSIZE 메시지를 사용하여 비트맵 이미지의 크기를 변경할 수 있지만 이미지를 내부 목록에 추가하기 전에 변경해야 합니다.

이미지 목록을 사용하여 단추 이미지 정의

이미지 목록 집합에 단추 이미지를 저장할 수도 있습니다. 이미지 목록은 동일한 크기의 이미지 컬렉션이며 각 이미지는 인덱스로 참조할 수 있습니다. 이미지 목록은 대규모 아이콘 또는 비트맵 집합을 관리하는 데 사용됩니다. 다음 표와 같이 최대 3개의 다른 이미지 목록을 사용하여 단추를 다양한 상태로 표시할 수 있습니다.

시스템 상태 설명
보통 기본 상태의 단추.
포인터 아래에 있거나 누른 단추. 핫 항목은 TBSTYLE_FLAT 스타일이 있는 도구 모음 컨트롤에서만 지원됩니다.
사용 안 함 사용하지 않도록 설정된 단추.

 

도구 모음이 삭제된 후 애플리케이션은 자신이 만든 이미지 목록을 해제해야 합니다.

단추의 텍스트 정의

각 단추는 이미지와 함께 또는 이미지 대신에 문자열을 표시할 수 있습니다. 도구 모음은 도구 모음 단추에 사용할 수 있는 모든 문자열을 포함하는 내부 목록을 유지합니다. 추가할 문자열이 포함된 버퍼의 주소를 지정하는 TB_ADDSTRING 메시지를 사용하여 내부 목록에 문자열을 추가합니다. 각 문자열은 null로 끝나야 하며 마지막 문자열은 두 개의 Null 문자로 끝나야 합니다.

각 문자열에는 인덱스(0부터 시작)가 있습니다. 문자열의 내부 목록에 추가된 첫 번째 문자열의 인덱스는 0이고 두 번째 문자열의 인덱스는 1입니다. TB_ADDSTRING은 목록 끝에 문자열을 추가하고 첫 번째 새 문자열의 인덱스를 반환합니다. 문자열의 인덱스를 사용하여 문자열을 단추와 연결합니다.

TB_ADDSTRING을 사용하는 것이 도구 모음에 문자열을 추가하는 유일한 방법은 아닙니다. TB_ADDBUTTONS에 전달되는 TBBUTTON 구조체의 iString 멤버에 문자열 포인터를 전달하여 단추에 문자열을 표시할 수 있습니다. 또한 TB_SETBUTTONINFO를 사용하여 도구 모음 단추에 텍스트를 할당할 수 있습니다.

도구 모음 단추 추가

CreateToolbarEx 함수를 사용하여 도구 모음을 만드는 경우 TBBUTTON 구조체의 배열을 채우고 함수 호출에서 배열의 주소를 지정하여 도구 모음에 단추를 추가할 수 있습니다. 그러나 CreateWindowEx 함수에는 TBBUTTON 구조체를 전달하기 위한 매개 변수가 없습니다. CreateWindowExTBBUTTON 구조체의 주소를 지정하는 TB_ADDBUTTONS 메시지를 전송하여 채우는 빈 도구 모음을 만듭니다.

도구 모음이 만들어진 후 TB_INSERTBUTTON 또는 TB_ADDBUTTONS 메시지를 전송하여 단추를 추가할 수 있습니다. 각 단추는 스타일, 상태, 명령 식별자 및 애플리케이션 정의 32비트 값은 물론 문자열 및 비트맵의 인덱스를 비롯하여 단추의 특성을 정의하는 TBBUTTON 구조체로 설명됩니다.

참고

CreateWindowEx 함수를 사용하여 도구 모음을 만드는 경우 단추를 추가하기 전에 TB_BUTTONSTRUCTSIZE 메시지를 보내야 합니다. 메시지는 TBBUTTON 구조체의 크기를 도구 모음에 전달합니다.

 

도구 모음 단추 스타일

단추의 스타일은 단추가 표시되는 방식과 사용자 입력에 응답하는 방식을 결정합니다. 예를 들어, BTNS_BUTTON 스타일은 표준 누름 단추처럼 작동하는 도구 모음 단추를 만듭니다. BTNS_CHECK 스타일이 있는 단추는 사용자가 클릭할 때마다 누른 상태와 누르지 않은 상태 사이를 전환한다는 점을 제외하면 표준 누름 단추와 유사합니다.

BTNS_GROUP 또는 BTNS_CHECKGROUP 스타일을 사용하여 라디오 단추처럼 작동하는 도구 모음 단추 그룹을 만들 수 있습니다. 이렇게 하면 사용자가 그룹에서 다른 단추를 선택할 때까지 단추가 눌려진 상태로 유지됩니다. 그룹은 모두 BTNS_GROUP 또는 BTNS_CHECKGROUP 스타일을 사용하는 연속적인 단추 컬렉션으로 정의됩니다.

BTNS_SEP 스타일은 단추 사이에 작은 간격을 만들거나 플랫 도구 모음의 단추 사이에 에칭을 그립니다. BTNS_SEP 스타일이 있는 단추는 사용자 입력을 받지 않습니다.

공용 컨트롤의 버전 5.80에는 몇 가지 새로운 도구 모음 단추 스타일이 도입되었으며 일부 이전 스타일의 이름이 변경되었습니다. 모든 단추 스타일 플래그는 이제 TBSTYLE_XXX 대신 BTNS_XXX로 시작합니다. 단추 스타일 목록 및 설명은 도구 모음 컨트롤 및 단추 스타일을 참조하세요.

도구 모음 단추 상태

도구 모음의 각 단추에는 상태가 있습니다. 도구 모음은 단추 클릭과 같은 사용자 작업을 반영하도록 단추의 상태를 업데이트합니다. 상태는 단추가 현재 눌렸는지 여부, 사용 또는 사용 안 함, 숨김 또는 표시 여부를 나타냅니다. 애플리케이션은 단추를 도구 모음에 추가할 때 단추의 초기 상태를 설정하지만 도구 모음에 TB_GETSTATETB_SETSTATE 메시지를 전송하여 상태를 변경하고 검색할 수 있습니다. 도구 모음 단추 상태 목록은 도구 모음 상태를 참조하세요.

명령 식별자

각 단추에는 관련된 애플리케이션 정의 명령 식별자가 있습니다. 단추 식별자는 일반적으로 애플리케이션 헤더 파일에 정의됩니다. 예를 들어, 붙여넣기 단추는 다음과 같이 정의할 수 있습니다.

#define ID_PASTE 100

사용자가 단추를 선택하면 도구 모음은 단추의 명령 식별자가 포함된 WM_COMMAND 또는 WM_NOTIFY 메시지를 부모 창에 보냅니다. 부모 창은 명령 식별자를 검사하고 단추와 관련된 명령을 수행합니다. 컨트롤이 WM_COMMAND 메시지를 보내는 경우와 WM_NOTIFY를 보내는 시기에 대한 자세한 내용은 WM_NOTIFY 설명서의 비고 섹션을 참조하세요.

단추 크기 및 위치

도구 모음은 각 단추에 위치 인덱스를 할당하여 해당 단추를 추적합니다. 인덱스는 0부터 시작합니다. 즉, 맨 왼쪽 단추의 인덱스는 0이고 오른쪽 다음 단추의 인덱스는 1입니다. 애플리케이션은 단추에 대한 정보를 검색하거나 단추의 특성을 설정하기 위해 메시지를 보낼 때 단추의 인덱스를 지정해야 합니다.

도구 모음은 단추가 삽입되고 제거될 때 위치 인덱스를 업데이트합니다. 애플리케이션은 TB_COMMANDTOINDEX 메시지를 사용하여 단추의 현재 위치 인덱스를 검색할 수 있습니다. 메시지는 단추의 명령 식별자를 지정하고, 도구 모음 창은 식별자를 사용하여 단추를 찾고 위치 인덱스를 반환합니다.

도구 모음의 모든 단추는 크기가 동일합니다. CreateToolbarEx 함수를 사용하려면 도구 모음을 만들 때 단추의 초기 크기를 설정해야 합니다. CreateWindowEx 함수를 사용할 때 초기 크기는 기본 크기인 24x22 픽셀로 설정됩니다. TB_SETBUTTONSIZE 메시지를 사용하여 단추 크기를 변경할 수 있지만 도구 모음에 단추를 추가하기 전에 변경해야 합니다. TB_GETIMRECT 메시지는 단추의 현재 크기를 검색합니다.

현재 도구 모음에 있는 문자열보다 더 긴 문자열을 추가하면 도구 모음이 해당 단추의 너비를 자동으로 초기화합니다. 너비는 도구 모음에서 가장 긴 문자열을 수용하도록 설정됩니다.

사용자 지정 사용

도구 모음에 CCS_ADJUSTABLE 공용 컨트롤 스타일을 지정하여 사용자가 사용할 수 있는 사용자 지정 기능이 도구 모음에 기본 제공되어 있습니다. 사용자 지정 기능을 통해 사용자가 단추를 새 위치로 끌거나 도구 모음 밖으로 끌어 단추를 제거할 수 있습니다. 또한 사용자는 도구 모음을 두 번 클릭하여 도구 모음 사용자 지정 대화 상자를 표시할 수 있습니다. 이 대화 상자를 통해 사용자는 도구 모음 단추를 추가, 삭제 및 재정렬할 수 있습니다. 대화 상자를 표시하려면 TB_CUSTOMIZE 메시지를 사용합니다. 애플리케이션은 사용자에게 이러한 사용자 지정 기능을 제공할 수 있는지 여부를 결정하고, 사용자가 도구 모음을 사용자 지정할 수 있는 정도를 제어합니다.

사용자 지정 프로세스의 파트로 애플리케이션은 종종 도구 모음의 상태를 저장하고 복원해야 합니다. 예를 들어, 많은 애플리케이션은 사용자가 나중에 도구 모음을 원래 상태로 복원하려는 경우 사용자가 도구 모음을 사용자 지정하기 전에 도구 모음 상태를 저장합니다. 도구 모음 컨트롤은 사전 사용자 지정 상태를 자동으로 기록하지 않습니다. 애플리케이션을 복원하려면 도구 모음 상태를 저장해야 합니다. 자세한 내용은 도구 모음 컨트롤 사용을 참조하세요.

핫 추적 사용

핫 추적은 포인터가 항목 위로 이동하면 단추의 모양이 변경됨을 의미합니다. 시각적 스타일이 사용하도록 설정되면 도구 모음은 기본적으로 핫 추적을 지원합니다. 그렇지 않으면 TBSTYLE_FLAT 스타일로 만들어진 도구 모음 컨트롤만 핫 추적을 지원합니다. 다른 창 스타일을 TBSTYLE_FLAT과 함께 사용하여 핫 추적을 가능하게 하지만 플랫 도구 모음과는 모양이 다른 도구 모음을 생성할 수 있습니다. 자세한 내용은 도구 모음 컨트롤 사용을 참조하세요.