슬라이더 바
(트랙 바라고도 하는) 슬라이더 바 컨트롤은 선택적인 눈금(tick) 표시가 있는 바, 그리고 (thumb이라고 하는) 슬라이더로 구성되어 있는 창입니다. 슬라이더 바는 사용자가 사용자가 범위 내에서 딱딱 끊어져 있거나(discrete), 연속적인 값들을 선택하게 할 때 유용합니다. 사용자는 추적하거나 마우스로 컨트롤 바 영역 아무 곳을 클릭하여 현재 위치를 변경할 수 있습니다. 바 영역 내에 클릭하면 컨트롤 값은 페이지 단위만큼 변경됩니다. (설명 참조) Windows에서 슬라이더 바는 키보드 포커스를 가질 수 있습니다. 슬라이더 바가 포커스되면, 포커스 사각형이 컨트롤 주변에 나타나고 사용자는 Home, End, PageUp, PageDown 그리고 화살표 키를 눌러서 컨트롤 값을 변경할 수 있습니다.
슬라이더 바는 범위와 현재 위치를 갖습니다. 범위는 슬라이더 바가 표현할 수 있는 연속적으로 이어지는 값들의 집합입니다. 왜냐하면 이 값들은 short integer로 표현되기 때문에 가장 높은 범위 값과 현재 위치 값은 SHRT_MAX입니다. 컨트롤 자체는 슬라이더의 픽셀 위치를 결정하기 위해 범위와 현재 값을 사용합니다.
슬라이더 바는 2가지 기본 타입들이 있습니다: 수평과 수직. 당신이 슬라이더 바를 생성할 때, DG는 지정된 수평 및 수직 크기에 따라 자동으로 방향을 결정합니다. 만약 수평 크기가 수직 크기보다 크면 DG는 수평 슬라이더 바를 만듭니다. 반대의 경우 DG는 수직 슬라이더 바를 만듭니다.
슬라이더 바는 선택적으로 눈금 표시를 보여줍니다. 만약 눈금 표시를 활성화하면, 최소한 2개의 눈금이 나타납니다: 양끝에 하나. 그러나 슬라이더 바를 따라 일정한 간격으로 추가적인 눈금 표시가 나올 수 있습니다. 눈금 표시 간의 거리는 페이지 크기와 동일합니다. 눈금 표시는 슬라이더 바의 양 측면에 배치할 수 있습니다.
항목 타입
- DG_ITM_SLIDER
서브 타입
-
서브 타입 의미 DG_SL_BOTTOMRIGHT 슬라이더가 아래쪽을 가리키거나(수평 슬라이더), 오른쪽을 가리킵니다(수직 슬라이더). 만약 눈금 표시를 활성화하면 슬라이더의 아래 또는 오른쪽에 각각 나타납니다.
DG_SL_TOPLEFT 슬라이더가 위쪽을 가리키거나(수평 슬라이더), 왼쪽을 가리킵니다(수직 슬라이더), 만약 눈금 표시를 활성화하면 슬라이더의 위 또는 왼쪽에 각각 나타납니다.
GRC 사양
Slider x y dx dy stepVal min max [sliderStyle]
x와 y는 슬라이더 바의 좌상단 코너의 픽셀 좌표입니다, dx와 dy는 컨트롤의 너비와 높이의 픽셀 크기입니다. 만약 stepVal이 0이면, 눈금 표시 그리기가 비활성화됩니다; 그렇지 않으면 눈금 표시가 활성화되고 stepVal은 다음 공식에 따라 슬라이더 바의 페이지 크기를 정의합니다: pageSize = (max - min) / stepVal (자세한 것은 설명 참조) min과 max는 슬라이더 바의 초기 범위를 지정합니다. 선택적인 sliderStyle flag는 슬라이더 바의 서브 타입을 지정합니다. 만약 이 flag가 생략되면, 기본적으로 DG_SL_BOTTOMRIGHT 서브 타입이 세트됩니다.
sliderStyle의 가능한 값은 다음과 같습니다:
-
값 의미 BottomRight DG_SL_BOTTOMRIGHT 서브 타입이 세트되었습니다. TopLeft DG_SL_TOPLEFT 서브 타입이 세트되었습니다.
메시지
-
메시지 의미 DG_MSG_CHANGE 슬라이더의 위치가 변경되었습니다. 메시지 데이터 파라미터는 예전 위치를 포함합니다. DG_MSG_TRACK 슬라이더의 위치가 추적하는 동안 변경되었습니다. 메시지 데이터 파라미터는 서브-메시지입니다.
수정 Flag
DGSetItemValLong, DGSetItemMinLong, DGSetItemMaxLong 함수들은 다이얼로그 콜백 함수에서 DG_MSG_INIT 메시지를 처리할 때 호출되는 경우를 제외하고 슬라이더 바의 수정 flag를 세트할 수 있습니다. flag는 DG_MSG_CHANGE 또는 DG_MSG_TRACK 메시지를 생성하는 사용자 액션에 의해서도 세트될 수 있습니다. 수정 flag의 상태를 가져오거나 리셋(지우기)하려면 DGModified 또는 DGResetModified를 사용하십시오.
설명
슬라이더 바의 범위는 GRC에서 지정할 수 있을 뿐만 아니라 DGSetItemMinLong과 DGSetItemMaxLong 함수를 이용하여 동적으로 범위를 변경할 수 있습니다. 범위의 최소값은 0, 최대값은 SHRT_MAX입니다. 슬라이더 바의 범위를 가져오려면 DGGetItemMinLong과 DGGetItemMaxLong을 사용하십시오. 슬라이더의 현재 위치는 DGSetItemValLong과 DGGetItemValLong으로 각각 세트하거나 가져올 수 있습니다.
만약 범위나 값 설정 함수가 호출되면, DG는 데이터의 일관성을 확인합니다. (minimum <= value <= maximum 조건이 참인지 아닌지) 만약 데이터에 일관성이 없으면 DG는 자동으로 조정합니다. 이 조정에 대한 자세한 것은 DGSetItemValLong, DGSetItemMinLong, DGSetItemMaxLong을 참고하십시오.
슬라이더의 위치는 최소값과 최대값을 기반으로 현재 값에서 파생됩니다. 상대 위치는 다음 공식을 이용하여 계산됩니다: relative position = (value - minimum) / (maximum - minimum). Windows에서 만약 최소값과 최대값이 같으면, 슬라이더는 컨트롤의 시작 부분에 있게 됩니다. 그러나 Macintosh에서는 이 경우 슬라이더 바가 비활성화됩니다.
만약 사용자가 슬라이더 바를 클릭하고 추적하거나, 컨트롤의 바 영역 안을 (왼쪽) 마우스 버튼으로 클릭한 채로 있거나, 슬라이더 바가 키보드 포커스를 갖고 있을 때 화살표 키 중 하나를 누르고 있으면, 사용자가 (왼쪽) 마우스 버튼 또는 눌렀던 키를 놓을 때까지 DG는 다이얼로그 콜백 함수에게 DG_MSG_TRACK 메시지를 보냅니다. DG_MSG_TRACK 메시지와 함께 서브-메시지도 전송됩니다. 여기에는 슬라이더 바 이벤트에 대한 자세한 내용을 지정하고 있습니다. 이것은 추적하는 동안 애플리케이션이 다른 컨트롤들을 변경할 수 있게 해줍니다. DG_MSG_TRACK 메시지를 처리할 때 슬라이더 바의 현재 위치를 가져오기 위해 DGGetItemValLong을 호출하십시오. 추적이 끝나자마자 콜백 함수는 DG_MSG_CHANGE 메시지를 받습니다; 메시지 데이터 파라미터는 추적 전의 슬라이더 위치입니다. 모든 DG_MSG_CHANGE 메시지 앞에는 최소한 1개 이상의 DG_MSG_TRACK 메시지가 앞선다는 것을 참고하십시오.
사용자가 슬라이더 바의 바 영역 안에 클릭할 때, 혹은 Windows의 경우 슬라이더 바가 키보드 포커스를 갖고 있을 때 PageUp 또는 PageDown 키를 눌렀을 때, 슬라이더 위치는 페이지 크기의 값만큼 변경됩니다. 페이지 크기는 다음 공식에 따라 GRC에서 초기화됩니다: pageSize = (maximum - minimum) / stepVal (stepVal은 0보다 커야 함) 스크롤 바의 범위가 DGSetItemMinLong 또는 DGSetItemMaxLong에 의해 변경되었을 때, pageSize 값은 자동으로 다시 계산되고, 눈금 표시들은 - 만약 활성화 되어 있다면 - 새로운 페이지 크기에 따라 다시 그려집니다. 만약 stepVal이 GRC에서 0으로 세트되어 있으면, 눈금 표시는 나타나지 않습니다. 이 경우 페이지 크기는 DG에서 정의하지 않고, 슬라이더 바는 시스템 기본 값을 사용합니다.
요구사항
- 버전: DG 2.0.0 또는 이후
- 헤더: DG.h
참고사항
다이얼로그 항목 타입
DGGetItemMaxLong, DGGetItemMinLong, DGGetItemValLong, DGModified, DGResetModified, DGSetItemMaxLong, DGSetItemMinLong, DGSetItemValLong, 콜백 함수
DG_MSG_CHANGE, DG_MSG_INIT, DG_MSG_TRACK