날짜 및 시간 선택 컨트롤 정보
DTP(날짜 및 시간 선택기) 컨트롤은 사용자와 날짜 및 시간 정보를 교환할 수 있는 간단하고 직관적인 인터페이스를 제공합니다. 예를 들어, DTP 컨트롤을 사용하면 사용자에게 날짜를 입력하도록 요청한 다음 선택 항목을 쉽게 검색할 수 있습니다.
다음 항목을 다룹니다.
참고
Windows는 1601 이전 날짜를 지원하지 않습니다. 자세한 내용은 FILETIME 구조체를 참조하세요.
컨트롤은 1753년에 도입된 양력(그레고리력)을 기반으로 합니다. 율리우스력과 일치하는 날짜는 계산하지 않습니다.
날짜 및 시간 선택기 사용자 인터페이스
DTP(날짜 및 시간 선택기) 컨트롤의 클라이언트 영역은 날짜 또는 시간 정보 또는 둘 다를 표시하고 사용자가 정보를 수정하는 인터페이스 역할을 합니다. 날짜는 달력에서 선택하거나 위아래 컨트롤을 사용하여 선택할 수 있습니다. 컨트롤의 형식 문자열에 의해 정의된 필드를 입력하여 시간을 변경할 수 있습니다. 선택적으로 컨트롤은 확인란을 표시합니다. 선택하면 컨트롤의 값을 검색할 수 있습니다. 그렇지 않으면 컨트롤이 초기화되지 않은 것으로 간주됩니다.
다음 그림에서는 세 개의 날짜 선택기 컨트롤이 포함된 창을 보여 줍니다. 첫 번째 날짜 선택기 컨트롤은 DTS_SHOWNONE 스타일로 만들어졌으며 두 번째는 DTS_UPDOWN 스타일로 만들어졌습니다. 세 번째는 특별한 스타일이 없습니다. 세 번째 컨트롤에서 사용자는 아래쪽 화살표를 클릭하여 달력을 표시했습니다.
다음 그림에서는 시간을 포함하는 세 개의 컨트롤이 있는 창을 보여 줍니다.
첫 번째 컨트롤은 DTS_TIMEFORMAT 스타일로 만들어졌으며 4개의 필드로 구성된 기본 시간으로 시간을 표시합니다. 사용자는 이러한 필드에 유효한 값을 입력하거나 필드를 선택하고 위아래 컨트롤 또는 화살표 키를 사용하여 값을 변경할 수 있습니다.
두 번째 컨트롤은 DateTime_SetFormat을 사용하여 설정된 사용자 지정 형식을 보여 줍니다. 첫 번째 컨트롤과 마찬가지로 사용자는 입력하거나 화살표 키를 사용하여 시간 필드를 변경할 수 있습니다. 사용자가 아래쪽 화살표를 클릭하면 열리는 달력에서 날짜를 선택하여 요일을 변경할 수 있습니다.
세 번째 컨트롤은 임의의 텍스트를 컨트롤에 추가할 수 있는 방법을 보여 줍니다. 사용자는 입력하거나 화살표 키를 사용하거나 위아래 컨트롤을 사용하여 시간(1에서 24까지)을 선택할 수 있습니다.
DTP 컨트롤은 사용자 입력에 따라 내부 정보를 자동으로 업데이트합니다. 컨트롤은 다음을 유효한 입력으로 인식합니다.
입력 범주 | 설명 |
---|---|
화살표 키 | 컨트롤은 컨트롤의 필드를 탐색하고 값을 변경하기 위해 화살표 키를 허용합니다. 사용자는 컨트롤을 통해 이동하기 위해 또는 키를 누를 수 있습니다. 사용자가 지정된 방향으로 마지막 필드를 지나 이동하려고 하면 키보드 포커스가 컨트롤의 반대쪽에 있는 필드로 "휘어집니다(wrap around)". and 키는 현재 필드의 값을 점진적으로 변경합니다. |
End 및 Home | 이 컨트롤은 VK_END 및 VK_HOME 가상 키를 수락하여 현재 필드 내의 값을 각각 상한 및 하한으로 변경합니다. |
함수 키 | 이 키는 편집 모드를 활성화합니다. 이 키를 누르면 컨트롤이 드롭다운 월 달력 컨트롤을 표시합니다(누르면 이 작업도 수행됨). |
숫자 | 이 컨트롤은 두 문자 세그먼트의 숫자 입력을 허용합니다. 사용자가 입력한 값이 유효하지 않은 경우(예: 월을 14로 설정) 컨트롤은 이를 거부하고 디스플레이를 이전 값으로 초기화합니다. |
더하기(+) 및 빼기(-) | 이 컨트롤은 숫자 키패드의 VK_ADD 및 VK_SUBTRACT 가상 키를 수락하여 현재 필드의 값을 증가 및 감소시킵니다. |
DTS_UPDOWN 스타일을 사용하지 않는 DTP 컨트롤은 화살표 단추를 표시합니다. 사용자가 이 단추를 클릭하면 월 달력 컨트롤이 드롭다운됩니다. 사용자는 달력의 영역을 클릭하여 특정 날짜를 선택할 수 있습니다.
날짜 및 시간 선택 컨트롤 스타일 및 형식
DTP(날짜 및 시간 선택기) 컨트롤에는 컨트롤의 모양과 동작을 결정하는 여러 날짜 및 시간 선택 컨트롤 스타일이 있습니다. CreateWindowEx의 dwStyle 매개 변수로 컨트롤을 만들 때 스타일을 지정합니다. 컨트롤을 만든 후 창 스타일을 검색하거나 변경하려면 GetWindowLong 및 SetWindowLong을 사용합니다.
사전 설정 형식
날짜 표시에 사용할 수 있는 세 가지 사전 설정 형식과 시간 표시에 사용할 수 있는 형식이 있습니다. 다음 창 스타일 중 하나를 선택하여 이러한 형식을 설정합니다.
서식 | 설명 |
---|---|
DTS_LONGDATEFORMAT | 디스플레이는 "Friday, April 19, 1996"과 같이 표시됩니다. |
DTS_SHORTDATEFORMAT | 디스플레이는 "4/19/96"과 같이 표시됩니다. |
DTS_SHORTDATECENTURYFORMAT | 버전 5.80. 디스플레이는 "4/19/1996"과 같이 표시됩니다. |
DTS_TIMEFORMAT | 디스플레이는 "5:31:42 PM"과 같이 표시됩니다. |
사용자 지정 형식
DTP 컨트롤은 형식 문자열을 사용하여 정보 필드를 표시하는 방법을 결정합니다. 사전 설정 형식이 충분하지 않은 경우 고유한 형식 문자열을 정의하여 사용자 지정 형식을 만들 수 있습니다. 사용자 지정 형식은 애플리케이션에 더 큰 유연성을 제공합니다. 컨트롤이 정보 필드를 표시하는 순서를 지정할 수 있습니다. 사용자에게 정보를 요청하기 위해 본문 텍스트와 콜백 필드를 포함할 수 있습니다. 문자열이 만들어지면 DTM_SETFORMAT 메시지와 함께 DTP 컨트롤에 할당합니다.
형식 문자열
DTP 형식 문자열은 특정 정보를 나타내고 표시 형식을 정의하는 일련의 요소로 구성됩니다. 요소는 형식 문자열에 나타나는 순서대로 표시됩니다.
날짜 및 시간 형식 요소는 실제 날짜 및 시간으로 바꿔집니다. 이들은 다음 문자 그룹으로 정의됩니다.
요소 | 설명 |
---|---|
"d" | 한 자리 또는 두 자리의 날짜입니다. |
"dd" | 두 자리 날짜입니다. 한 자리 일 값 앞에는 0이 옵니다. |
"ddd" | 3자로 된 요일 약어입니다. |
"dddd" | 전체 요일 이름입니다. |
"h" | 12시간 형식의 한 자리 또는 두 자리 시간입니다. |
"hh" | 12시간 형식의 두 자리 시간입니다. 한 자리 값은 앞에 0이 붙습니다. |
"H" | 24시간 형식의 한 자리 또는 두 자리 시간입니다. |
"HH" | 24시간 형식의 두 자리 시간입니다. 한 자리 값은 앞에 0이 붙습니다. |
"m" | 한 자리 또는 두 자리 분입니다. |
"mm" | 두 자리 분입니다. 한 자리 값은 앞에 0이 붙습니다. |
"M" | 한 자리 또는 두 자리 월 숫자입니다. |
"MM" | 두 자리 월 숫자입니다. 한 자리 값은 앞에 0이 붙습니다. |
"MMM" | 3자로 된 월 약어입니다. |
"MMMM" | 전체 월 이름입니다. |
"t" | 1자로 된 AM/PM 약어입니다(즉, AM은 "A"로 표시됨). |
"tt" | 2자로 된 AM/PM 약어입니다(즉, AM은 "AM"으로 표시됨). |
"yy" | 연도의 마지막 두 자리(즉, 1996은 "96"으로 표시됨)입니다. |
"yyyy" | 전체 연도(즉, 1996은 "1996"으로 표시됨). |
정보를 보다 쉽게 읽을 수 있도록 작은따옴표로 묶어 형식 문자열에 본문 텍스트를 추가할 수 있습니다. 공백과 문장 부호는 인용할 필요가 없습니다.
참고
작은따옴표로 구분되지 않은 형식이 아닌 문자는 DTP 컨트롤에서 예측할 수 없는 표시를 생성합니다.
예를 들어, "'Today is: 04:22:31 Tuesday Mar 23, 1996" 형식으로 현재 날짜를 표시하려면 형식 문자열은 "'Today is: 'hh':'m':'s dddd MMM dd', 'yyyy"입니다. 본문 텍스트에 작은따옴표를 포함하려면 두 개의 연속된 작은따옴표를 사용합니다. 예를 들어, "'Don't forget' MMM dd',' yyyy"는 다음과 같은 출력을 생성합니다. Do not forget Mar 23, 1996. 쉼표와 함께 따옴표를 사용할 필요가 없으므로 "'Don't forget' MMM dd, yyyy"도 유효하며 동일한 출력을 생성합니다.
콜백 필드
표준 형식 문자열 및 본문 텍스트 외에도 디스플레이의 특정 파트를 콜백 필드로 정의할 수도 있습니다. 이러한 필드는 사용자에게 정보를 쿼리하는 데 사용할 수 있습니다. 콜백 필드를 선언하려면 형식 문자열에 하나 이상의 "X" 문자(ASCII 코드 88)를 포함합니다. "X" 문자를 반복하여 고유 ID가 있는 콜백 필드를 만들 수 있습니다. 따라서 형식 문자열 "XX dddd MMM dd', 'yyy XXX"에는 두 개의 고유한 콜백 필드 "XX" 및 "XXX"가 포함됩니다. 다른 DTP 컨트롤 필드와 마찬가지로 콜백 필드는 형식 문자열의 위치에 따라 왼쪽에서 오른쪽 순서로 표시됩니다.
DTP 컨트롤이 형식 문자열을 구문 분석하고 콜백 필드를 만나면 DTN_FORMAT 및 DTN_FORMATQUERY 알림 코드를 보냅니다. 콜백 필드에 해당하는 형식 문자열 요소는 수신 애플리케이션이 어떤 콜백 필드가 쿼리되고 있는지 결정할 수 있도록 알림에 포함됩니다. 컨트롤 소유자는 이러한 알림에 응답하여 사용자 지정 정보가 제대로 표시되도록 해야 합니다.
날짜 및 시간 선택 컨트롤 알림 메시지
DTP(날짜 및 시간 선택기) 컨트롤은 사용자 입력을 받거나 콜백 필드를 처리하고 반응할 때 알림 코드를 보냅니다. 컨트롤의 부모는 WM_NOTIFY 메시지 형식으로 이러한 알림 코드를 받습니다.
다음 알림 코드는 DTP 컨트롤과 함께 사용됩니다.
알림 코드 | 설명 |
---|---|
DTN_CLOSEUP | 드롭다운 월 달력이 곧 제거됨을 나타냅니다. |
DTN_DATETIMECHANGE | DTP 컨트롤 내에서 변경 신호를 보냅니다. |
DTN_DROPDOWN | 드롭다운 월 달력이 곧 표시될 것임을 나타냅니다. |
DTN_FORMAT | 콜백 필드로 설명된 형식 문자열의 일부에 표시할 텍스트를 요청합니다. |
DTN_FORMATQUERY | 콜백 필드에 표시할 텍스트의 최대 허용 크기에 대한 정보를 요청합니다. |
DTN_USERSTRING | 컨트롤 내에서 사용자의 편집 작업이 끝났음을 알립니다. 이 알림은 DTS_APPCANPARSE 스타일을 사용하는 DTP 컨트롤에서만 전송됩니다. |
DTN_WMKEYDOWN | 사용자가 DTP 컨트롤의 콜백 필드에서 키를 눌렀음을 알립니다. |
관련 항목