다음을 통해 공유


날짜 및 시간 선택 컨트롤 정보

DTP(날짜 및 시간 선택기) 컨트롤 사용자와 날짜 및 시간 정보를 교환하는 간단하고 직관적인 인터페이스를 제공합니다. 예를 들어 DTP 컨트롤을 사용하면 사용자에게 날짜를 입력한 다음 선택 항목을 쉽게 검색하도록 요청할 수 있습니다.

다음 항목에 대해 설명합니다.

메모

Windows는 1601 이전 날짜를 지원하지 않습니다. 자세한 내용은 FILETIME 구조를 참조하세요.

이 컨트롤은 1753년에 도입된 그레고리오력에 기반을 두고 있습니다. 율리우스력과 일치하는 날짜는 계산되지 않습니다.

날짜 및 시간 선택 사용자 인터페이스

DTP(날짜 및 시간 선택기) 컨트롤의 클라이언트 영역에는 날짜 또는 시간 정보 또는 둘 다 표시되며 사용자가 정보를 수정하는 인터페이스 역할을 합니다. 달력에서 또는 업다운 컨트롤을 사용하여 날짜를 선택할 수 있습니다. 컨트롤의 형식 문자열정의된 필드를 입력하여 시간을 변경할 수 있습니다. 필요에 따라 컨트롤에 확인란이 표시됩니다. 이 옵션을 선택하면 컨트롤의 값을 검색할 수 있습니다. 그렇지 않으면 컨트롤이 초기화되지 않은 것으로 간주됩니다.

다음 그림에서는 세 개의 날짜 선택 컨트롤이 포함된 창을 보여 줍니다. 첫 번째 날짜 선택 컨트롤은 DTS_SHOWNONE 스타일, 두 번째는 DTS_UPDOWN 스타일, 세 번째는 특별한 스타일이 없는 스타일로 만들어졌습니다. 세 번째 컨트롤에서 사용자가 아래쪽 화살표를 클릭하여 일정을 표시했습니다.

세 가지 스타일의 날짜 선택 컨트롤을 보여주는 창의 스크린샷 .

다음 그림에서는 시간을 포함하는 세 개의 컨트롤이 있는 창을 보여 줍니다.

첫 번째 컨트롤은 DTS_TIMEFORMAT 스타일로 만들어졌으며 4개의 필드로 구성된 기본 시간의 시간을 표시합니다. 사용자는 이러한 필드에 유효한 값을 입력하거나 필드를 선택하고 위쪽 컨트롤 또는 화살표 키를 사용하여 값을 변경할 수 있습니다.

두 번째 컨트롤은 DateTime_SetFormat사용하여 사용자 지정 형식 집합을 표시합니다. 첫 번째 컨트롤과 마찬가지로 사용자는 입력하거나 화살표 키를 사용하여 시간 필드를 변경할 수 있습니다. 사용자가 아래쪽 화살표를 클릭할 때 열리는 일정에서 날짜를 선택하여 요일을 변경할 수 있습니다.

세 번째 컨트롤은 임의 텍스트를 컨트롤에 추가할 수 있는 방법을 보여줍니다. 사용자는 입력하거나 화살표 키를 사용하거나 위쪽 컨트롤을 사용하여 1~24시간을 선택할 수 있습니다.

세 개의 시간 포함 컨트롤을 보여주는 창의 스크린샷

DTP 컨트롤은 사용자의 입력에 따라 내부 정보를 자동으로 업데이트합니다. 컨트롤은 다음을 유효한 입력으로 인식합니다.

입력 범주 묘사
화살표 키 컨트롤은 화살표 키를 사용하여 컨트롤의 필드를 탐색하고 값을 변경합니다. 사용자가 키를 눌러 컨트롤을 이동할 수 있습니다. 사용자가 지정된 방향으로 마지막 필드를 지나 이동하려고 하면 키보드 포커스가 컨트롤 반대쪽 필드로 "래핑"됩니다. 키와 키는 현재 필드의 값을 증분 방식으로 변경합니다.
끝 및 홈 컨트롤은 VK_END 및 VK_HOME 가상 키를 수락하여 현재 필드 내의 값을 각각 상한 및 하한으로 변경합니다.
함수 키 키가 편집 모드를 활성화합니다. 이 키를 누르면, 컨트롤에 드롭다운 월 달력이 표시됩니다(이 동작은 눌러서도 수행할 수 있습니다).
숫자 컨트롤은 두 문자 세그먼트의 숫자 입력을 허용합니다. 사용자가 입력한 값이 유효하지 않은 경우(예: 월을 14로 설정) 컨트롤은 해당 값을 거부하고 표시를 이전 값으로 다시 설정합니다.
더하기 및 빼기 컨트롤은 숫자 키패드의 VK_ADD 및 VK_SUBTRACT 가상 키를 수락하여 현재 필드의 값을 증가시키고 감소합니다.

 

DTS_UPDOWN 스타일을 사용하지 않는 DTP 컨트롤은 화살표 단추를 표시합니다. 사용자가 이 단추를 클릭하면 월 달력 컨트롤이 삭제됩니다. 사용자는 일정의 영역을 클릭하여 특정 날짜를 선택할 수 있습니다.

날짜 및 시간 선택 컨트롤 스타일 및 형식

DTP(날짜 및 시간 선택기) 컨트롤에는 컨트롤의 모양과 동작을 결정하는 여러 날짜 및 시간 선택 컨트롤 스타일 있습니다. CreateWindowExdwStyle 매개 변수를 사용하여 컨트롤을 만들 때 스타일을 지정합니다. 컨트롤을 만든 후 창 스타일을 검색하거나 변경하려면 GetWindowLongSetWindowLong사용합니다.

미리 설정된 형식

날짜를 표시하는 데 사용할 수 있는 세 가지 미리 설정된 형식과 시간을 표시하는 데 사용할 수 있는 형식이 있습니다. 다음 창 스타일 중 하나를 선택하여 이러한 형식을 설정합니다.

포맷 묘사
DTS_LONGDATEFORMAT 디스플레이는 "1996년 4월 19일 금요일"처럼 표시됩니다.
DTS_SHORTDATEFORMAT 디스플레이는 "4/19/96"처럼 표시됩니다.
DTS_SHORTDATECENTURYFORMAT 버전 5.80. 디스플레이는 "1996년 4월 19일"처럼 표시됩니다.
DTS_TIMEFORMAT 디스플레이는 "오후 5시 31분 42분"처럼 표시됩니다.

 

사용자 지정 형식

DTP 컨트롤은 형식 문자열을 사용하여 정보 필드를 표시하는 방법을 결정합니다. 미리 설정된 형식으로 충분하지 않은 경우 고유한 형식 문자열을 정의하여 사용자 지정 형식을 만들 수 있습니다. 사용자 지정 형식은 애플리케이션에 더 큰 유연성을 제공합니다. 컨트롤에서 정보 필드를 표시할 순서를 지정할 수 있습니다. 본문 텍스트와 사용자로부터 정보를 요청하기 위한 콜백 필드를 포함할 수 있습니다. 문자열이 만들어지면 DTM_SETFORMAT 메시지를 사용하여 DTP 컨트롤에 할당합니다.

문자열 서식 지정

DTP 형식 문자열은 특정 정보를 나타내고 표시 형식을 정의하는 일련의 요소로 구성됩니다. 요소는 형식 문자열에 표시되는 순서대로 표시됩니다.

날짜 및 시간 형식 요소는 실제 날짜 및 시간으로 대체됩니다. 다음 문자 그룹에 의해 정의됩니다.

요소 묘사
"d" 1자리 또는 2자리 일.
"dd" 두 자리 날짜입니다. 한 자리 일 값 앞에는 0이 있습니다.
"ddd" 요일을 나타내는 3글자 약어입니다.
"dddd" 전체 평일 이름입니다.
"h" 12시간 형식에서 한 자리 또는 두 자리로 표시되는 시(hour)입니다.
"hh" 12시간 형식의 두 자리 시간입니다. 한 자리 값 앞에는 0이 있습니다.
"H" 24시간 형식에서 한 자리수 또는 두 자리수로 된 시간입니다.
"HH" 24시간 형식의 두 자릿수 시간 표시. 한 자리 값 앞에는 0이 있습니다.
"m" 숫자로 표시된 한 자리 또는 두 자리의 분입니다.
"mm" 두 자리 분입니다. 한 자리 값 앞에는 0이 있습니다.
"M" 1자리 또는 2자리 월 번호입니다.
"MM" 두 자리 월 번호입니다. 한 자리 값 앞에는 0이 있습니다.
"MMM" 3자로 된 월 약어입니다.
"MMMM" 전체 월 이름입니다.
t 한 글자 AM/PM 약어(즉, AM은 "A"로 표시됨)입니다.
"tt" 두 글자 AM/PM 약어(즉, AM은 "AM"로 표시됨)입니다.
"yy" 올해의 마지막 두 자리(즉, 1996년은 "96"로 표시됨)입니다.
"yyyy" 전체 연도(즉, 1996년은 "1996"로 표시됨).

 

정보를 더 읽기 쉽게 만들려면 작은따옴표로 묶어 서식 문자열에 본문 텍스트를 추가할 수 있습니다. 공백 및 문장 부호는 따옴표로 묶을 필요가 없습니다.

메모

작은따옴표로 구분되지 않은 형식이 아닌 문자는 DTP 컨트롤에서 예측할 수 없는 표시를 초래합니다.

예를 들어 현재 날짜를 "'Today is: 1996년 3월 23일 화요일 04:22:31" 형식으로 표시하려면 형식 문자열은 "'Today is: 'hh':'m':'s dddd MMM dd', 'yyyy"입니다. 본문 텍스트에 작은따옴표를 포함하려면 두 개의 연속된 작은따옴표를 사용합니다. 예를 들어 "'잊지 마세요' MMM dd',' yyyy"는 다음과 같은 출력을 생성합니다. 1996년 3월 23일을 잊지 마세요. 따옴표를 쉼표와 함께 사용할 필요가 없으므로 "'잊지 마세요'MMM dd, yyyy"도 유효하며 동일한 출력을 생성합니다.

콜백 필드

표준 서식 문자열 및 본문 텍스트 외에도 디스플레이의 특정 부분을 콜백 필드정의할 수도 있습니다. 이러한 필드를 사용하여 사용자에게 정보를 쿼리할 수 있습니다. 콜백 필드를 선언하려면 형식 문자열의 아무 곳에나 하나 이상의 "X" 문자(ASCII 코드 88)를 포함합니다. "X" 문자를 반복하여 고유한 ID가 있는 콜백 필드를 만들 수 있습니다. 따라서 형식 문자열 "XX dddd MMM dd', 'yyy XXX"에는 "XX" 및 "XXX"라는 두 개의 고유한 콜백 필드가 포함됩니다. 다른 DTP 컨트롤 필드와 마찬가지로 콜백 필드는 형식 문자열의 위치에 따라 왼쪽에서 오른쪽 순서로 표시됩니다.

DTP 컨트롤은 형식 문자열을 구문 분석하고 콜백 필드를 발견하면 DTN_FORMATDTN_FORMATQUERY 알림 코드를 보냅니다. 콜백 필드에 해당하는 형식 문자열 요소는 수신 애플리케이션이 쿼리할 콜백 필드를 결정할 수 있도록 알림에 포함됩니다. 컨트롤의 소유자는 사용자 지정 정보가 제대로 표시되도록 이러한 알림에 응답해야 합니다.

날짜 및 시간 선택 컨트롤 알림 메시지

DTP(날짜 및 시간 선택기) 컨트롤은 사용자 입력 또는 프로세스를 수신하고 콜백 필드에 반응할 때 알림 코드를 보냅니다. 컨트롤의 부모는 이러한 알림 코드를 WM_NOTIFY 메시지 형식으로 받습니다.

다음 알림 코드는 DTP 컨트롤과 함께 사용됩니다.

알림 코드 묘사
DTN_CLOSEUP 드롭다운 월 달력이 제거될 예정임을 나타냅니다.
DTN_DATETIMECHANGE DTP 컨트롤 내에서 변경 신호를 전송합니다.
DTN_DROPDOWN 드롭다운 월 달력이 표시될 예정임을 나타냅니다.
DTN_FORMAT 콜백 필드로 설명된 형식 문자열의 일부에 표시할 텍스트를 요청합니다.
DTN_FORMATQUERY 콜백 필드에 표시할 텍스트의 최대 허용 크기에 대한 정보를 요청합니다.
DTN_USERSTRING 컨트롤 내에서 사용자의 편집 작업의 종료를 알립니다. 이 알림은 DTS_APPCANPARSE 스타일을 사용하는 DTP 컨트롤에서만 전송됩니다.
DTN_WMKEYDOWN 사용자가 DTP 컨트롤의 콜백 필드에서 키를 눌렀음을 나타냅니다.

 

날짜 및 시간 선택 컨트롤 참조