도구 모음 컨트롤 정보
도구 모음은 하나 이상의 단추를 포함하는 컨트롤입니다. 사용자가 클릭하면 각 단추가 부모 창에 명령 메시지를 보냅니다. 일반적으로 도구 모음의 단추는 애플리케이션 메뉴의 항목에 해당하여 사용자가 애플리케이션의 명령에 액세스할 수 있는 보다 직접적인 추가 방법을 제공합니다.
다음 스크린샷은 파일 작업에 대한 간단한 도구 모음이 포함된 창을 보여 줍니다. 애플리케이션에서 비주얼 스타일을 사용하도록 설정했습니다. 저장 버튼은 스크린샷을 찍을 때 커서가 그 위에 있었기 때문에 강조 표시되어 있습니다. 컨트롤의 실제 모양은 운영 체제 및 사용자가 선택한 테마에 따라 달라집니다.
창의 스크린샷 .
다음 스크린샷은 비주얼 스타일을 사용하도록 설정하지 않고 컴파일된 애플리케이션에서 동일한 컨트롤을 보여 줍니다.
비주얼 스타일이 없는 창의 스크린샷: 단추 중 어느 것도 강조되지 않음
다음 항목에서는 도구 모음을 계획할 때 고려해야 할 기능에 대해 설명합니다. 구현 및 예제 코드에 대한 자세한 내용은 도구 모음 컨트롤 사용참조하세요.
- 도구 모음 크기 및 위치 지정
- 투명 도구 모음
- 목록 스타일 도구 모음
-
버튼 이미지 정의
- 비트맵 사용하여 단추 이미지 정의
- 이미지 목록 사용하여 단추 이미지 정의
- 버튼 텍스트 정의
- 도구 모음 단추 추가
- 사용자 지정 가능
- 핫 트래킹 활성화
도구 모음 크기 및 위치 지정
CreateToolbarEx사용하여 도구 모음을 만드는 경우 이 함수를 사용하면 도구 모음의 높이와 너비를 픽셀 단위로 지정할 수 있습니다.
메모
이미지 목록을 포함하여 도구 모음의 새로운 기능을 지원하지 않으므로 CreateToolbarEx 사용하지 않는 것이 좋습니다. 도구 모음을 만드는 방법에 대한 자세한 내용은 도구 모음 컨트롤 사용참조하세요.
CreateWindowEx 함수에는 도구 모음 크기를 지정하기 위한 매개 변수가 없습니다. 도구 모음 창 프로시저는 도구 모음 창의 크기와 위치를 자동으로 설정합니다. 높이는 도구 모음의 단추 높이를 기반으로 합니다. 너비는 부모 창의 클라이언트 영역 너비와 같습니다. 자동 크기 설정을 변경하려면 TB_SETBUTTONSIZE 메시지를 보냅니다. CCS_TOP 및 CCS_BOTTOM 공통 컨트롤 스타일은 도구 모음이 클라이언트 영역의 위쪽 또는 아래쪽을 따라 배치되는지 여부를 결정합니다. 기본적으로 도구 모음에는 CCS_TOP 스타일이 있습니다.
또한 도구 모음 창 프로시저는 WM_SIZE 또는 TB_AUTOSIZE 메시지를 받을 때마다 도구 모음의 크기를 자동으로 조정합니다. 애플리케이션은 부모 창의 크기가 변경되거나 도구 모음의 크기를 조정해야 하는 메시지(예: TB_SETBUTTONSIZE 메시지)를 보낸 후 이러한 메시지 중 하나를 보내야 합니다.
도구 모음의 기본 크기 조정 및 위치 지정 동작은 CCS_NORESIZE 및 CCS_NOPARENTALIGN 같은 일반적인 컨트롤 스타일을 설정하여 해제할 수 있습니다. Rebar 컨트롤이 호스트하는 도구 모음 컨트롤은 도구 모음의 크기와 위치를 지정하기 때문에 이러한 스타일을 설정해야 합니다.
투명한 도구 모음
도구 모음 컨트롤은 도구 모음 아래의 클라이언트 영역을 표시할 수 있는 투명한 모양을 지원합니다. 투명한 도구 모음에는 플랫 단추가 있는 도구 모음과 3차원 단추가 있는 도구 모음의 두 종류가 있습니다. 애플리케이션이 Windows 인터페이스와 일치하도록 하려면 플랫 투명 스타일 도구 모음을 사용합니다.
다음 스크린샷은 비주얼 스타일을 사용하지 않는 두 종류의 투명한 도구 모음을 보여 줍니다.
다음 스크린샷은 시각적 스타일을 사용하도록 설정된 Windows Vista에 표시될 수 있는 투명한 도구 모음을 보여 줍니다. 투명도를 더 명확히 하기 위해 대화 상자의 배경색이 변경되었습니다.
투명한 도구 모음을 만들려면 CreateWindowEx창 스타일 매개 변수에 TBSTYLE_FLAT 또는 TBSTYLE_TRANSPARENT 추가하기만 하면 됩니다. 도구 모음의 아래쪽을 나타내는 줄을 표시하지 않으려면 WS_BORDER 창 스타일을 사용하지 마세요.
메모
비주얼 스타일을 사용하는 경우 도구 모음은 기본적으로 평평할 수 있습니다.
목록 스타일 도구 모음
도구 모음 단추를 사용하면 텍스트와 비트맵을 모두 표시할 수 있습니다. TBSTYLE_LIST 스타일로 만든 도구 모음의 단추는 텍스트를 비트맵 아래가 아닌 오른쪽에 배치합니다.
다음 스크린샷은 목록 스타일이 있는 도구 모음을 보여줍니다.
각 아이콘
TBSTYLE_FLAT 스타일과 함께 TBSTYLE_LIST 도구 모음 스타일을 사용하여 플랫 단추가 있는 도구 모음을 만들 수 있습니다.
단추 이미지 정의
단추의 이미지를 지정하는 방법은 비트맵 또는 이미지 목록으로 두 가지가 있습니다. 애플리케이션은 사용할 메서드를 선택해야 합니다. 동일한 도구 모음 컨트롤에서 두 메서드를 모두 사용할 수 없습니다. CreateToolbarEx 함수는 비트맵 메서드를 사용합니다. 이미지 목록 메서드를 사용하려는 애플리케이션은 CreateWindowEx 함수를 사용하여 도구 모음 컨트롤을 만들어야 합니다.
비트맵을 사용하여 단추 이미지 정의
도구 모음의 각 단추에는 비트맵 이미지가 포함될 수 있습니다. 도구 모음은 내부 목록을 사용하여 이미지를 그리는 데 필요한 정보를 저장합니다. CreateToolbarEx 함수를 호출할 때 초기 이미지가 포함된 단색 또는 색 비트맵을 지정하고 도구 모음은 이미지의 내부 목록에 정보를 추가합니다. 나중에 TB_ADDBITMAP 메시지를 사용하여 이미지를 추가할 수 있습니다.
각 이미지에는 0부터 시작하는 인덱스가 있습니다. 내부 목록에 추가된 첫 번째 이미지의 인덱스는 0이고, 두 번째 이미지의 인덱스는 1입니다. TB_ADDBITMAP 목록의 끝에 이미지를 추가하고 추가한 첫 번째 새 이미지의 인덱스도 반환합니다. 이미지를 단추와 연결하려면 TB_ADDBUTTONS 메시지를 보내고 내부 이미지 목록에 비트맵을 추가한 후 이미지의 인덱스를 지정해야 합니다.
Windows에서는 도구 모음의 비트맵 이미지가 모두 동일한 크기라고 가정합니다. CreateToolbarEx사용하여 도구 모음을 만들 때 크기를 지정합니다. CreateWindowEx 함수를 사용하여 도구 모음을 만드는 경우 이미지의 크기는 기본 크기인 16 x 15픽셀로 설정됩니다. TB_SETBITMAPSIZE 메시지를 사용하여 비트맵된 이미지의 차원을 변경할 수 있지만 내부 목록에 이미지를 추가하기 전에 변경해야 합니다.
이미지 목록을 사용하여 단추 이미지 정의
이미지 목록집합에 단추 이미지를 저장할 수도 있습니다. 이미지 목록은 동일한 크기의 이미지 컬렉션으로, 각각 인덱스로 참조할 수 있습니다. 이미지 목록은 큰 아이콘 또는 비트맵 집합을 관리하는 데 사용됩니다. 다음 표와 같이 최대 3개의 다른 이미지 목록을 사용하여 다양한 상태로 단추를 표시할 수 있습니다.
상태 | 설명 |
---|---|
보통 | 기본 상태의 단추 |
덥다 | 포인터 아래에 있거나 누른 버튼. 핫 항목은 TBSTYLE_FLAT 스타일이 있는 도구 모음 컨트롤에서만 지원됩니다. |
비활성화 | 비활성화된 버튼. |
도구 모음이 제거된 후 애플리케이션은 만든 이미지 목록을 해제해야 합니다.
단추에 대한 텍스트 정의
각 단추는 이미지 외에 또는 그 대신 문자열을 표시할 수 있습니다. 도구 모음은 도구 모음 단추에 사용할 수 있는 모든 문자열을 포함하는 내부 목록을 유지 관리합니다. TB_ADDSTRING 메시지를 사용하여 추가할 문자열을 포함하는 버퍼의 주소를 지정하여 내부 목록에 문자열을 추가합니다. 각 문자열은 null로 종료되어야 하며 마지막 문자열은 두 개의 null 문자로 종료되어야 합니다.
각 문자열에는 0부터 시작하는 인덱스가 있습니다. 문자열의 내부 목록에 추가된 첫 번째 문자열의 인덱스는 0이고 두 번째 문자열의 인덱스는 1입니다. TB_ADDSTRING 목록의 끝에 문자열을 추가하고 첫 번째 새 문자열의 인덱스를 반환합니다. 문자열의 인덱스로 문자열을 단추와 연결합니다.
TB_ADDSTRING 사용하는 것만이 도구 모음에 문자열을 추가하는 유일한 방법은 아닙니다. TBBUTTON 구조체의 iString 멤버에 문자열 포인터를 전달하여 TB_ADDBUTTONS에 전달하면, 단추에 문자열을 표시할 수 있습니다. 또한 TB_SETBUTTONINFO 사용하여 도구 모음 단추에 텍스트를 할당할 수 있습니다.
도구 모음 단추 추가
CreateToolbarEx 함수를 사용하여 도구 모음을 만드는 경우 TBBUTTON 구조의 배열을 채우고 함수 호출에서 배열의 주소를 지정하여 도구 모음에 단추를 추가할 수 있습니다. 그러나 CreateWindowEx 함수에는 TBBUTTON 구조를 전달하기 위한 매개 변수가 없습니다. CreateWindowEx 비어 있는 도구 모음을 생성합니다. 그런 다음 TBBUTTON 구조체의 주소를 지정하여 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_GETSTATE 및 TB_SETSTATE 메시지를 전송하여 상태를 변경하고 검색할 수 있습니다. 도구 모음 단추 상태 목록은 도구 모음 상태참조하세요.
명령 식별자
각 단추에는 연결된 애플리케이션 정의 명령 식별자가 있습니다. 단추 식별자는 일반적으로 애플리케이션 헤더 파일에 정의됩니다. 예를 들어 붙여넣기 단추는 다음과 같이 정의할 수 있습니다.
#define ID_PASTE 100
사용자가 단추를 선택하면 도구 모음에서 단추의 명령 식별자가 포함된 WM_COMMAND 또는 WM_NOTIFY 메시지를 부모 창에 보냅니다. 부모 창은 명령 식별자를 검사하고 단추와 연결된 명령을 수행합니다. 컨트롤이 WM_COMMAND 메시지를 보내는 시기와 WM_NOTIFY보내는 시기에 대한 자세한 내용은 WM_NOTIFY 설명서의 설명 섹션을 참조하세요.
단추 크기 및 위치
도구 모음은 각 단추에 위치 인덱스를 할당하여 해당 단추를 추적합니다. 인덱스가 0부터 시작하는 경우 즉, 맨 왼쪽 단추의 인덱스는 0이고 오른쪽의 다음 단추에는 인덱스가 1입니다. 애플리케이션 단추에 대 한 정보를 검색 하거나 단추의 특성을 설정 하는 메시지를 보낼 때 단추의 인덱스 지정 해야 합니다.
도구 모음은 단추가 삽입되고 제거될 때 위치 인덱스를 업데이트합니다. 애플리케이션은 TB_COMMANDTOINDEX 메시지를 사용하여 단추의 현재 위치 인덱스 검색할 수 있습니다. 메시지는 단추의 명령 식별자를 지정하고 도구 모음 창은 식별자를 사용하여 단추를 찾고 위치 인덱스를 반환합니다.
도구 모음의 모든 단추 크기는 동일합니다. CreateToolbarEx 함수를 사용하려면 도구 모음을 만들 때 단추의 초기 크기를 설정해야 합니다. CreateWindowEx 함수를 사용하는 경우 초기 크기는 24 x 22 픽셀의 기본 크기로 설정됩니다. TB_SETBUTTONSIZE 메시지를 사용하여 단추 크기를 변경할 수 있지만 도구 모음에 단추를 추가하기 전에 변경해야 합니다. TB_GETITEMRECT 메시지는 단추의 현재 차원을 검색합니다.
현재 도구 모음에 있는 문자열보다 긴 문자열을 추가하면 도구 모음에서 단추의 너비를 자동으로 다시 설정합니다. 너비는 도구 모음에서 가장 긴 문자열을 수용하도록 설정됩니다.
맞춤 설정 활성화
도구 모음에는 도구 모음에 CCS_ADJUSTABLE 공통 컨트롤 스타일을 제공하여 사용자가 사용할 수 있는 기본 제공 사용자 지정 기능이 있습니다. 사용자 지정 기능을 사용하면 사용자가 단추를 새 위치로 끌거나 도구 모음에서 끌어 단추를 제거할 수 있습니다. 또한 도구 모음을 두 번 클릭하여 도구 모음 사용자 지정 대화 상자를 표시할 수 있습니다. 이를 통해 사용자가 도구 모음 단추를 추가, 삭제 및 다시 정렬할 수 있습니다. 대화 상자를 표시하려면 TB_CUSTOMIZE 메시지를 사용합니다. 애플리케이션은 사용자 지정 기능을 사용자에게 사용할 수 있는지 여부를 결정하고 사용자가 도구 모음을 사용자 지정할 수 있는 범위를 제어합니다.
사용자 지정 프로세스의 일부로 애플리케이션은 종종 도구 모음의 상태를 저장하고 복원해야 합니다. 예를 들어 사용자가 나중에 도구 모음을 원래 상태로 복원하려는 경우 도구 모음 사용자 지정을 시작하기 전에 많은 애플리케이션이 도구 모음 상태를 저장합니다. 도구 모음 컨트롤은 해당 사전 설정 상태의 레코드를 자동으로 유지하지 않습니다. 애플리케이션을 복원하려면 도구 모음 상태를 저장해야 합니다. 자세한 내용은 도구 모음 컨트롤 사용 참조하세요.
핫 트래킹 활성화
핫 트래킹은 포인터가 항목 위로 이동하면 단추의 모양이 변경된다는 것을 의미합니다. 비주얼 스타일을 사용하도록 설정하면 도구 모음은 기본적으로 핫 트래킹을 지원합니다. 그렇지 않으면 TBSTYLE_FLAT 스타일로 만든 도구 모음 컨트롤만 핫 추적을 지원합니다. 다른 창 스타일을 TBSTYLE_FLAT과 결합하여 핫 트래킹 기능을 사용할 수 있지만 플랫 도구 모음과는 다른 외관을 가진 도구 모음을 생성할 수 있습니다. 자세한 내용은 도구 모음 컨트롤 사용 참조하세요.