날짜 & 시간 컨트롤
날짜 & 시간 컨트롤은 사용자가 쉽게 날짜와 시간을 선택할 수 있도록 단순하고 직관적인 인터페이스를 제공합니다.
날짜 & 시간 컨트롤은 2개의 분리된 영역들을 갖고 있습니다: 클라이언트 (디스플레이), 그리고 상-하 영역. 컨트롤의 클라이언트 영역은 필드들로 구성되어 있습니다. 각 필드는 컨트롤이 내부적으로 저장하는 날짜 및 시간 정보 부분을 표시합니다. 날짜 또는 시간 정보는 (Macintosh의 경우) 시스템 스크립트 또는 (Windows의 경우) 시스템 로케일 설정의 포맷 기반으로 표시됩니다.
사용자는 키보드 포커스를 세트하기 위해 필드를 클릭할 수 있습니다. 그 다음에 해당 필드가 보여주는 정보를 변경하기 위해 키보드 입력을 제공합니다. 상-하 영역 내 스핀 컨트롤 역시 선택된 필드의 내용을 변경하는 데 사용됩니다. 컨트롤은 사용자의 입력을 기반으로 내부 정보를 자동으로 업데이트합니다.
Windows에서는 소위 캘린더 타입 날짜 컨트롤 역시 존재합니다. 캘린터 컨트롤은 스핀 컨트롤 대신 아래쪽 화살표를 포함하고 있습니다. 만약 사용자가 이 버튼을 누르면 마우스나 화살표 키를 이용하여 날짜를 선택할 수 있는 캘린터 팝업이 나타납니다.
항목 타입
- DG_ITM_DATETIME
서브 타입
-
서브 타입 의미 DG_DT_DATE 날짜 컨트롤 (연, 월, 일)
DG_DT_TIME 시간 컨트롤 (시, 분, 초)
Windows only:
DG_DT_CALENDAR 캘린더 컨트롤 (연, 월, 일)
GRC 사양
DateControl x y dx dy [Calendar] TimeControl x y dx dy
x와 y는 날짜 & 시간 컨트롤의 좌상단 코너의 픽셀 좌표입니다. dx와 dy는 컨트롤의 너비와 높이의 픽셀 크기입니다. Macintosh에서 선택적인 Calendar flag는 효과가 없으며 컨트롤은 항상 DG_DT_DATE 서브 타입으로 그려집니다.
Calendar의 가능한 값은 다음과 같습니다:
-
값 의미 Standard DG_DT_DATE 서브 타입을 가진 컨트롤입니다. Standard는 기본 값입니다. Calendar DG_DT_CALENDAR 서브 타입을 가진 컨트롤입니다. (Windows 전용)
제안된 크기
날짜 & 시간 컨트롤에 대하여 제안된 항목 높이는 22 픽셀입니다. GRC나 프로그램 코드에서 날짜 & 시간 컨트롤을 생성할 때 이 값을 사용하는 것이 바람직합니다.
메시지
-
메시지 의미 DG_MSG_CHANGE 날짜 또는 시간 정보가 변경되었습니다. 메시지 데이터 파라미터는 예전 날짜와 시간 정보를 포함하고 있습니다. DG_MSG_FOCUS 날짜 & 시간 컨트롤이 키보드 포커스를 얻었거나 잃었습니다. 이때 메시지 데이터는 각각 1 또는 0입니다.
수정 Flag
DGSetItemValLong, DGSetItemMinLong, DGSetItemMaxLong 함수들은 다이얼로그 콜백 함수에서 DG_MSG_INIT 메시지를 처리할 때 호출되는 경우를 제외하고는 날짜 & 시간 컨트롤의 수정 flag를 세트할 수 있습니다. flag는 또한 DG_MSG_CHANGE 메시지를 생성하는 사용자 액션에 의해서도 세트될 수 있습니다. 수정 flag를 가져오거나 리셋(지우기)하려면 DGModified 또는 DGResetModified를 사용하십시오.
설명
날짜와 시간 정보는 표준 C 언어 시스템 시간 포맷으로 표시됩니다. (자세한 것은 C/C++ 컴파일러의 C 런-타임 라이브러리 레퍼런스를 보십시오) 시스템 시간은 두 플랫폼에서 차이가 있습니다:
- 시스템 시간은 두 플랫폼에서 차이가 있습니다:
Macintosh 전용:
- 1904년 1월 1일부터 경과한 초의 수 (0 <= value <= ULONG_MAX)
Windows 전용:
- 1970년 1월 1일부터 경과한 초의 수 (0 <= value <= LONG_MAX)
현재 날짜 & 시간 컨트롤에 표시된 시간 정보의 C 시스템 시간을 가져오려면 DGGetItemValLong을 호출하고 리턴 값을 time_t로 캐스팅하십시오. C 시스템 시간 값은 DGSetItemValLong으로 날짜 & 시간 컨트롤에 할당할 수 있습니다.
날짜 & 시간 컨트롤은 주어진 시간 간격으로만 시간 값들을 표시하도록 제한할 수 있습니다. DGSetItemMinLong과 DGSetItemMaxLong을 사용하여 시간 간격의 시작과 끝을 정의할 수 있습니다. 예전에 설정한 제한 값들을 DGGetItemMinLong과 DGGetItemMaxLong으로 가져올 수 있습니다. 모든 함수들은 C 시스템 시간으로 작동합니다.
날짜 & 시간 컨트롤이 초기화되면, 글꼴은 자동으로 large plain 글꼴(DG_IS_LARGE | DG_IS_PLAIN)로 세트됩니다. 이 설정은 나중에 DGSetItemFont로 변경할 수 있습니다. 날짜 & 시간 컨트롤에 현재 할당된 글꼴을 가져오려면 DGGetItemFont를 사용하십시오.
날짜 & 시간 컨트롤은 DG의 포커스 가능한 컨트롤 중 하나입니다. 날짜 & 시간 컨트롤이 사용자 액션의 결과로 키보드 포커스를 얻었거나 잃었을 때, 다이얼로그 콜백 함수는 DG_MSG_FOCUS 메시지를 받습니다. 프로그램 코드에서 DGSetFocus를 통해서도 날짜 & 시간 컨트롤에 키보드 포커스를 세트할 수 있습니다. 현재 키보드 포커스가 있는 컨트롤을 가져오려면 DGGetFocus를 사용하십시오.
DG의 키보드 포커스와 포커스 가능한 컨트롤 카테고리는 실질적으로 Macintosh 운영체제에서와 동일한 의미를 갖습니다. (즉, DG와 Macintosh에서 포커스 가능한 컨트롤들의 타입이 동일합니다) 그러나 Windows에서는 더 많은 컨트롤들이 키보드 포커스를 가질 수 있습니다. DG의 포커스 가능한 컨트롤들은 Windows의 포커스 가능한 컨트롤들의 부분 집합입니다. DGSetFocus와 DGGetFocus 함수들은 DG의 포커스 가능한 컨트롤들에만 작동합니다.
요구사항
- 버전: DG 1.1.0 또는 이후
- 헤더: DG.h
참고사항
다이얼로그 항목 타입
DGGetFocus, DGGetItemFont, DGGetItemMaxLong, DGGetItemMinLong, DGGetItemValLong, DGModified, DGResetModified, DGSetFocus, DGSetItemFont, DGSetItemMaxLong, DGSetItemMinLong, DGSetItemValLong, 콜백 함수
DG_MSG_CHANGE, DG_MSG_FOCUS, DG_MSG_INIT