다음을 통해 공유


일 상태 설정하기

이 항목에서는 일 상태 정보를 설정하는 방법을 보여 줍니다. 월 달력 컨트롤은 일 상태 정보를 사용하여 컨트롤 내에서 특정 일을 그리는 방법을 결정합니다.

월 달력 컨트롤은 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;

월 달력 컨트롤 참조

월별 달력 컨트롤 정보

월별 달력 컨트롤 사용하기