Up-Down 컨트롤에 대한 정보
위쪽 컨트롤은 스크롤 위치 또는 도우미 컨트롤에 표시되는 숫자(버디 창이라고 함)와 같은 값을 증가 또는 감소하기 위해 클릭할 수 있는 화살표 단추 쌍입니다.
사용자에게 업다운 컨트롤과 해당 버디 창은 종종 단일 컨트롤처럼 보입니다. 업다운 컨트롤이 자동으로 버디 창 옆에 배치되고 버디 창의 캡션을 현재 위치로 자동으로 설정하도록 지정할 수 있습니다. 예를 들어 편집 컨트롤과 함께 업다운 컨트롤을 사용하여 사용자에게 숫자 입력을 요청하는 메시지를 표시할 수 있습니다. 다음 그림에서는 편집 컨트롤을 버디 창으로 사용하는 업다운 컨트롤을 보여 줍니다. 이 조합은 회전자 컨트롤이라고도 합니다.
오른쪽 가장자리에 위쪽 및 아래쪽 화살표가 있는 짧고 넓은 사각형 컨트롤을 보여주는 스크린샷
이 섹션에서는 다음 항목에 대해 설명합니다.
Up-Down 컨트롤 스타일
창 스타일을 사용하면 버디 창을 기준으로 위치를 지정하는 방법, 버디 창의 텍스트를 설정하는지 여부, 위쪽 화살표 및 아래쪽 화살표 키를 처리하는지 여부와 같은 업다운 컨트롤의 특성을 조작할 수 있습니다.
위아래 조절 기능은 UDS_ALIGNLEFT 또는 UDS_ALIGNRIGHT 스타일을 사용하여 버디 창의 왼쪽 또는 오른쪽 가장자리에 맞추어 조정됩니다. 위쪽 컨트롤의 너비를 수용하기 위해 버디 창의 너비를 줄입니다.
UDS_SETBUDDYINT 스타일을 사용하는 업다운 컨트롤은 현재 위치가 변경 될 때마다 버디 창의 캡션을 설정합니다. 컨트롤은 UDS_NOTHOUSANDS 스타일을 지정하지 않는 한 소수 문자열의 세 자리 사이에 천 단위 구분 기호를 삽입합니다. 버디 창이 목록 상자인 경우 업다운 컨트롤은 캡션 대신 현재 선택 영역을 설정합니다.
UDS_ARROWKEYS 스타일을 지정하여 업다운 컨트롤에 대한 키보드 인터페이스를 제공할 수 있습니다. 이 스타일을 지정하면 컨트롤이 위쪽 및 아래쪽 화살표 키를 처리합니다. 또한 이 컨트롤은 버디 창에 포커스가 있을 때 이러한 키를 처리할 수 있도록 버디 창을 서브클래싱합니다.
가로 스크롤에 업다운 컨트롤을 사용하는 경우 UDS_HORZ 스타일을 지정할 수 있습니다. 이 스타일을 사용하면 위쪽 및 아래쪽이 아닌 위쪽 컨트롤의 화살표가 왼쪽과 오른쪽을 가리킵니다.
기본적으로 현재 위치는 사용자가 증분을 시도하거나 최대값 또는 최소값을 초과하여 감소하려고 하면 변경되지 않습니다. UDS_WRAP 스타일을 사용하여 이 동작을 변경할 수 있으므로 위치가 반대 극단으로 "래핑"됩니다. 예를 들어 상한을 초과하여 증가하면 위치가 하한값으로 다시 래핑됩니다.
위치 및 가속
업다운 컨트롤을 만든 후 메시지를 보내 컨트롤의 현재 위치, 최소 위치 및 최대 위치를 변경할 수 있습니다. 또한 버디 창에서 현재 위치를 표시하는 데 사용되는 radix 기준과 위쪽 또는 아래쪽 화살표를 클릭할 때 현재 위치가 변경되는 속도를 변경할 수도 있습니다.
업다운 컨트롤의 현재 위치를 검색하려면 UDM_GETPOS 메시지를 사용합니다. 버디 창이 있는 업다운 컨트롤의 경우 현재 위치는 버디 창의 캡션에 있는 숫자입니다. 캡션이 변경되었을 수 있으므로(예: 사용자가 편집 컨트롤의 텍스트를 편집했을 수 있음) 업다운 컨트롤은 현재 캡션을 검색하고 그에 따라 현재 위치를 업데이트합니다.
버디 창의 캡션은 업다운 컨트롤의 radix base(즉, base 10 또는 16)에 따라 10진수 또는 16진수 문자열일 수 있습니다. UDM_SETBASE 메시지를 사용하여 radix 베이스를 설정하고 UDM_GETBASE 메시지를 사용하여 radix 베이스를 검색할 수 있습니다.
UDM_SETPOS 메시지는 버디 창의 현재 위치를 설정합니다. 스크롤 막대와 달리 위쪽 및 아래쪽 화살표를 클릭하면 위쪽 및 아래쪽 컨트롤의 현재 위치가 자동으로 변경됩니다. 따라서 애플리케이션은 WM_VSCROLL 또는 WM_HSCROLL 메시지를 처리할 때 현재 위치를 설정할 필요가 없습니다.
UDM_SETRANGE 메시지를 사용하여 업다운 컨트롤의 최소 및 최대 위치를 변경할 수 있습니다. 최대 위치는 최소값보다 작을 수 있으며, 이 경우 위쪽 화살표 단추를 클릭하면 현재 위치가 줄어듭니다. 다르게 말하면, 최대 위치로 향하는 것을 의미합니다. 업다운 컨트롤의 최소 및 최대 위치를 검색하려면 UDM_GETRANGE 메시지를 사용합니다.
사용자가 위쪽 컨트롤의 가속을 설정하여 화살표 단추를 누를 때 위치가 변경되는 속도를 제어할 수 있습니다. 가속은 UDACCEL 구조의 배열에 의해 정의됩니다. 각 구조체는 시간 간격과 해당 간격의 끝에 증가 또는 감소할 단위 수를 지정합니다. 가속을 설정하려면 UDM_SETACCEL 메시지를 사용합니다. 가속 정보를 검색하려면 UDM_GETACCEL 메시지를 사용합니다.
기본 Up-Down 제어 메시지 처리
이 섹션에서는 업다운 컨트롤에서 처리하는 표준 Windows 메시지에 대해 설명합니다.
메시지 | 처리 수행됨 |
---|---|
WM_CREATE | 프라이빗 데이터 구조를 할당하고 초기화하고 주소를 창 데이터로 저장합니다. |
WM_DESTROY | WM_CREATE 처리하는 동안 할당된 데이터를 해제합니다. |
WM_ENABLE | 창을 무효화합니다. |
WM_KEYDOWN | 위쪽 화살표 또는 아래쪽 화살표 키의 경우 현재 위치를 변경합니다. |
WM_KEYUP | 위치 변경을 완료합니다. |
WM_LBUTTONDOWN | 마우스를 캡처합니다. 버디 창이 편집 컨트롤 또는 목록 상자인 경우 포커스를 버디 창으로 설정합니다. 마우스가 위쪽 또는 아래쪽 단추 위에 있으면 위치 변경이 시작되고 타이머가 설정됩니다. |
WM_LBUTTONUP | 위치 변경을 완료하고 위쪽 컨트롤이 마우스를 캡처한 경우 마우스 캡처를 해제합니다. 버디 창이 편집 컨트롤인 경우 편집 컨트롤의 모든 텍스트를 선택합니다. |
WM_PAINT | 위아래 컨트롤을 그립니다. wParam 매개 변수가 NULL이 아닌 경우 컨트롤은 값이 HDC 가정하고 해당 디바이스 컨텍스트를 사용하여 페인트합니다. |
WM_TIMER | 마우스가 단추 위에 놓이고 충분한 간격이 경과된 경우 현재 위치를 변경합니다. |