다음을 통해 공유


업다운 컨트롤 정보

업다운 컨트롤은 사용자가 클릭하여 스크롤 위치 또는 도우미 컨트롤에 표시되는 숫자(버디 창이라고 함)와 같은 값을 증가하거나 감소할 수 있는 화살표 단추 쌍입니다.

사용자에게 업다운 컨트롤과 해당 버디 창은 종종 단일 컨트롤처럼 보입니다. 업다운 컨트롤이 자동으로 버디 창 옆에 배치되고 버디 창의 캡션을 현재 위치로 자동으로 설정하도록 지정할 수 있습니다. 예를 들어 편집 컨트롤과 함께 업다운 컨트롤을 사용하여 사용자에게 숫자 입력을 묻는 메시지를 표시할 수 있습니다. 다음 그림에서는 편집 컨트롤을 버디 창으로 사용하는 업다운 컨트롤을 보여 줍니다. 이 조합은 회전자 컨트롤이라고도 합니다.

screen shot showing a short, wide rectangular control with up and down arrows at the right edge

이 섹션에서 설명하는 항목은 다음과 같습니다.

업다운 컨트롤 스타일

창 스타일을 사용하면 버디 창을 기준으로 위치를 지정하는 방법, 버디 창의 텍스트를 설정하는지 여부, UP ARROW 및 DOWN ARROW 키를 처리하는지 여부와 같은 업다운 컨트롤의 특성을 조작할 수 있습니다.

UDS_ALIGNLEFT 또는 UDS_ALIGNRIGHT 스타일이 있는 업다운 컨트롤은 버디 창의 왼쪽 또는 오른쪽 가장자리에 맞춥니다. 업다운 컨트롤의 너비를 수용하기 위해 버디 창의 너비가 줄어듭니다.

UDS_SETBUDDYINT 스타일을 사용하는 업다운 컨트롤은 현재 위치가 변경 될 때마다 버디 창의 캡션을 설정합니다. 컨트롤은 UDS_NOTHOUSANDS 스타일을 지정하지 않는 한 소수 문자열의 3자리마다 천 단위 구분 기호를 삽입합니다. 버디 창이 목록 상자인 경우 업다운 컨트롤은 캡션 대신 현재 선택 영역을 설정합니다.

UDS_ARROWKEYS 스타일을 지정하여 업다운 컨트롤에 대한 키보드 인터페이스를 제공할 수 있습니다. 이 스타일을 지정하면 컨트롤이 위쪽 및 아래쪽 화살표 키를 처리합니다. 또한 컨트롤은 버디 창에 포커스가 있을 때 이러한 키를 처리할 수 있도록 버디 창을 서브클래스합니다.

가로 스크롤에 업다운 컨트롤을 사용하는 경우 UDS_HORZ 스타일을 지정할 수 있습니다. 이 스타일을 사용하면 위쪽 및 아래쪽이 아닌 업다운 컨트롤의 화살표가 왼쪽과 오른쪽을 가리킵니다.

기본적으로 사용자가 최대값 또는 최소값을 초과하여 증가하거나 감소시키려고 하면 현재 위치가 변경되지 않습니다. UDS_WRAP 스타일을 사용하여 이 동작을 변경할 수 있으므로 위치가 반대 극단으로 "래핑"됩니다. 예를 들어 상한을 초과하여 증가하면 위치가 하한으로 다시 래핑됩니다.

위치 및 가속

업다운 컨트롤을 만든 후 메시지를 보내 컨트롤의 현재 위치, 최소 위치 및 최대 위치를 변경할 수 있습니다. 또한 버디 창에서 현재 위치를 표시하는 데 사용되는 radix 기준과 위쪽 또는 아래쪽 화살표를 클릭할 때 현재 위치가 변경되는 속도를 변경할 수도 있습니다.

업다운 컨트롤의 현재 위치를 검색하려면 UDM_GETPOS 메시지를 사용합니다. 버디 창이 있는 업다운 컨트롤의 경우 현재 위치는 버디 창의 캡션에 있는 숫자입니다. 캡션이 변경되었을 수 있으므로(예: 사용자가 편집 컨트롤의 텍스트를 편집했을 수 있음) 업다운 컨트롤은 현재 캡션을 검색하고 그에 따라 현재 위치를 업데이트합니다.

버디 창의 캡션은 업다운 컨트롤의 radix 베이스(즉, 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 메시지를 사용합니다.

기본 업다운 컨트롤 메시지 처리

이 섹션에서는 업다운 컨트롤에서 처리되는 표준 Windows 메시지에 대해 설명합니다.

메시지 수행된 처리
WM_CREATE 프라이빗 데이터 구조체를 할당 및 초기화하고 해당 주소를 창 데이터로 저장합니다.
WM_DESTROY WM_CREATE 처리 중에 할당된 데이터를 해제합니다.
WM_ENABLE 창을 무효화합니다.
WM_KEYDOWN UP ARROW 또는 DOWN ARROW 키의 경우 현재 위치를 변경합니다.
WM_KEYUP 위치 변경을 완료합니다.
WM_LBUTTONDOWN 마우스를 캡처합니다. 버디 창이 편집 컨트롤 또는 목록 상자인 경우 포커스를 버디 창으로 설정합니다. 마우스가 위쪽 또는 아래쪽 단추 위에 있으면 위치 변경이 시작되고 타이머가 설정됩니다.
WM_LBUTTONUP 위치 변경을 완료하고 업다운 컨트롤이 마우스를 캡처한 경우 마우스 캡처를 해제합니다. 버디 창이 편집 컨트롤인 경우 편집 컨트롤의 모든 텍스트를 선택합니다.
WM_PAINT 업다운 컨트롤을 그립니다. wParam 매개 변수가 NULL이 아닌 경우 컨트롤은 값이 HDC라고 가정하고 해당 디바이스 컨텍스트를 사용하여 그립니다.
WM_TIMER 마우스가 단추를 누른 상태로 충분한 간격이 경과되면 현재 위치를 변경합니다.