스핀 컨트롤
스핀 컨트롤은 사용자가 클릭하여 스크롤 위치 또는 동반하는 Edit 컨트롤에 표시되는 수와 같은 값을 증가 혹은 감소시킬 수 있는 한 쌍의 화살표 버튼입니다. 스핀 컨트롤은 2가지 기본 타입이 있습니다: 단독 스핀 컨트롤과 Edit 스핀 컨트롤.
단독 스핀 컨트롤은 일종의 단순화된 스크롤 바처럼 작동합니다. 이것은 다이얼로그 안에 어디든지 위치할 수 있으며 스크롤링 입력이 필요한 아무 때에나 사용될 수 있습니다. Windows에서 당신이 단독 스핀 컨트롤을 생성할 때, DG는 자동으로 지정한 수평 및 수직 크기에 따라 방향을 결정합니다. 만약 수평 크기가 수직 크기보다 크면 DG는 수평 스핀 컨트롤을 생성합니다. 반대의 경우 DG는 수직 스핀 컨트롤을 생상합니다. Macintosh에서는 수직 단일 스핀 컨트롤만 지원합니다.
Edit 스핀 컨트롤은 항상 Integer 혹은 양의 Integer 타입의 Edit 컨트롤과 연관되어 있습니다. Edit 스핀 컨트롤과 Edit 컨트롤은 생성되었을 때에만 서로 연관될 수 있습니다. Edit 스핀 컨트롤은 다이얼로그 항목 리스트에서 동반 Edit 컨트롤 직후에 있어야 합니다. 그리고 Edit 컨트롤의 오른쪽 옆에 있어야 합니다. Windows에서 DG는 이 컨트롤들을 가까이 붙여서 때때로 스피너 컨트롤이라고도 하는 단일 컨트롤처럼 보이게 합니다. Edit 스핀 컨트롤들은 항상 수직 방향을 갖고 있습니다. 위 또는 아래 화살표를 클릭하여 양쪽 컨트롤의 값을 증가 혹은 감소시킵니다. Windows에서 동반 Edit 컨트롤이 키보드 포커스를 갖게 되면 컨트롤의 값은 마우스 클릭 외에도 키보드의 위, 아래 화살표 키로도 값을 변경시킬 수 있습니다.
스핀 컨트롤과 연관된 값을 현재 위치라고 합니다. 스핀 컨트롤은 또한 스핀 컨트롤이 나타낼 수 있는 연속적인 값의 집합인 범위를 갖습니다. 왜냐하면 이 값들은 short integer로 표현되기 때문에 최소값과 최대값은 각각 SHRT_MIN과 SHRT_MAX입니다. 이것은 integer-타입 Edit 컨트롤의 범위가 반드시 short 값으로 제한되어야 한다는 것을 암시합니다.
항목 타입
- DG_ITM_SPINCONTROL
서브 타입
-
서브 타입 의미 DG_ST_SINGLESPIN 독립적인 스핀 컨트롤입니다.
DG_ST_EDITSPIN Integer 또는 양의 Integer 타입의 Edit 컨트롤과 연관된 스핀 컨트롤입니다.
GRC 사양
SingleSpin x y dx dy min max EditSpin x y dx dy editID
x와 y는 스핀 컨트롤 좌상단 코너의 픽셀 좌표입니다. dx와 dy는 컨트롤의 너비와 높이의 픽셀 크기입니다. min과 max는 단독 스핀 컨트롤의 초기 범위를 지정합니다. editID는 Edit 스핀 컨트롤과 연관된 동반 Edit 컨트롤의 다이얼로그 항목 식별자입니다. Edit 컨트롤의 타입은 integer 또는 양의 integer이어야 합니다. (DG_ET_INT or DG_ET_POSINT) 그리고 editID는 Edit 스핀 컨트롤의 ID보다 1 작은 값이어야 합니다.
메시지
-
메시지 의미 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에서 지정됩니다. 그러나 Edit 스핀 컨트롤의 범위는 동반 Edit 컨트롤의 비슷한 값에 따라 초기화됩니다. 나중에 당신은 DGSetItemMinLong과 DGSetItemMaxLong 함수로 범위를 동적으로 변경할 수 있습니다. 범위의 최소값은 SHRT_MIN, 최대값은 SHRT_MAX입니다. 물론, 양의 integer 타입 Edit 컨트롤이 함께 있다면 Edit 스핀 컨트롤의 최소값은 0입니다. 스핀 컨트롤의 범위를 가져오려면 DGGetItemMinLong과 DGGetItemMaxLong을 사용하십시오. 스핀 컨트롤의 현재 값은 DGSetItemValLong과 DGGetItemValLong으로 각각 세트하거나 가져올 수 있습니다.
만약 범위 또는 값 설정 함수가 호출되면, DG는 데이터의 일관성을 확인합니다. (minimum <= value <= maximum 조건이 참인지 아닌지) 만약 데이터에 일관성이 없으면 DG가 자동으로 조정합니다. 이 조정에 대한 자세한 것은 DGSetItemValLong, DGSetItemMinLong, DGSetItemMaxLong을 보십시오.
만약 사용자가 단독 스핀 컨트롤의 화살표 중 하나를 (왼쪽) 마우스 버튼으로 클릭하고 유지하고 있으면, DG는 사용자가 (왼쪽) 마우스 버튼을 놓을 때까지 다이얼로그 콜백 함수에게 DG_MSG_TRACK 메시지를 보냅니다. DG_MSG_TRACK 메시지와 함께 서브-메시지도 전송됩니다. 여기에는 스핀 컨트롤 이벤트에 대해 자세히 지정하고 있습니다. 이것은 추적하는 동안 애플리케이션이 다른 컨트롤들을 변경할 수 있게 해줍니다. DG_MSG_TRACK 메시지를 처리할 때, 스핀 컨트롤의 현재 값을 가져오려면 DGGetItemValLong을 호출하십시오. 사용자가 (왼쪽) 마우스 버튼을 놓자마자 콜백 함수는 DG_MSG_CHANGE 메시지를 받습니다; 메시지 데이터 파라미터는 추적 전의 컨트롤의 값입니다. 모든 DG_MSG_CHANGE 메시지 앞에는 DG_MSG_TRACK 메시지가 최소한 1개 이상 앞서서 발생한다는 것을 참고하십시오.
Edit 스핀 컨트롤과 동반 Edit 컨트롤의 범위와 값은 당신이 컨트롤의 DGSetItemValLong, DGSetItemMinLong 또는 DGSetItemMaxLong 함수 중 하나를 호출할 때마다 DG에 의해 자동으로 동기화됩니다. Edit 스핀 컨트롤은 DG_MSG_CHANGE 메시지를 수신하지 않습니다. 대신 동반 Edit 컨트롤에게 보내진다는 것을 참고하십시오.
요구사항
- 버전: DG 2.0.0 또는 이후
- 헤더: DG.h
참고사항
다이얼로그 항목 타입, Edit 컨트롤
DGGetItemMaxLong, DGGetItemMinLong, DGGetItemValLong, DGModified, DGResetModified, DGSetItemMaxLong, DGSetItemMinLong, DGSetItemValLong, 콜백 함수
DG_MSG_CHANGE, DG_MSG_INIT, DG_MSG_TRACK