이 항목에서는 일 상태 정보를 설정하는 방법을 보여 줍니다. 월 달력 컨트롤은 일 상태 정보를 사용하여 컨트롤 내에서 특정 일을 그리는 방법을 결정합니다.
월 달력 컨트롤은 MCS_DAYSTATE 스타일로 지원되는 일 상태를 사용할 수 있습니다. 일 상태 정보는 MONTHDAYSTATE32비트 데이터 형식으로 표현됩니다. MONTHDAYSTATE 비트 필드의 각 비트(0~30)는 한 달의 일 상태를 지정합니다. 비트가 켜지면 해당 날짜가 굵게 표시됩니다.
알아야 할 사항
기술
필수 구성 요소
- C/C++
- Windows 사용자 인터페이스 프로그래밍
지시
애플리케이션은 MCM_SETDAYSTATE 메시지를 보내거나 해당 매크로를 사용하여 MonthCal_SetDayState일 상태 정보를 명시적으로 설정할 수 있습니다. 그러나 일 상태 정보는 일반적으로 컨트롤을 새로 고쳐야 할 때마다 전송되는 MCN_GETDAYSTATE 알림 코드에 대한 응답으로 설정됩니다. 예를 들어 다른 월이 보기로 스크롤되었기 때문입니다.
다음 예제 코드는 WM_NOTIFY 메시지 처리기에서 MCN_GETDAYSTATE 알림 코드를 처리하는 방법을 보여줍니다. 표시되는 각 월의 첫 번째 및 15일을 강조 표시되도록 지정하여 MCN_GETDAYSTATE 처리합니다. NMDAYSTATE 구조체의 cDayState 멤버는 배열에 필요한 MONTHDAYSTATE 값의 수를 지정하며 임의 최대 크기가 지정됩니다. 그런 다음 코드는 애플리케이션 정의 BOLDDAY 매크로를 사용하여 배열의 각 유효한 요소에 적절한 비트를 설정하는 루프를 실행합니다.
#define BOLDDAY(ds, iDay) \
if (iDay > 0 && iDay < 32)(ds) |= (0x00000001 << (iDay - 1))
case WM_NOTIFY:
if (((LPNMHDR)lParam)->code == MCN_GETDAYSTATE)
{
MONTHDAYSTATE rgMonths[12] = { 0 };
int cMonths = ((NMDAYSTATE*)lParam)->cDayState;
for (int i = 0; i < cMonths; i++)
{
BOLDDAY(rgMonths[i], 1);
BOLDDAY(rgMonths[i], 15);
}
((NMDAYSTATE*)lParam)->prgDayState = rgMonths;
return TRUE;
}
break;
관련 항목