다음을 통해 공유


포함된 MonthCalendar 컨트롤 액세스

포함된 월 달력 컨트롤 개체는 GetMonthCalCtrl 멤버 함수를 호출하여 개체에서 CDateTimeCtrl 액세스할 수 있습니다.

참고 항목

포함된 월 달력 컨트롤은 날짜 및 시간 선택 컨트롤에 DTS_UPDOWN 스타일 집합이 없는 경우에만 사용됩니다.

포함된 컨트롤이 표시되기 전에 특정 특성을 수정하려는 경우에 유용합니다. 이렇게 하려면 DTN_DROPDOWN 알림을 처리하고, 월 달력 컨트롤(CDateTimeCtrl::GetMonthCalCtrl 사용)을 검색하고 수정합니다. 아쉽게도 월 달력 컨트롤은 영구적이지 않습니다.

즉, 사용자가 월 달력 컨트롤의 표시를 요청하면 DTN_DROPDOWN 알림 전에 새 월 달력 컨트롤이 만들어집니다. 사용자가 해제하면 컨트롤이 제거됩니다(DTN_CLOSEUP 알림 후). 즉, 포함된 컨트롤이 표시되기 전에 수정한 특성은 포함된 컨트롤이 해제될 때 손실됩니다.

다음 예제에서는 DTN_DROPDOWN 알림에 대한 처리기를 사용하여 이 절차를 보여 줍니다. 이 코드는 SetMonthCalColor를 호출하여 월 달력 컨트롤의 배경색을 회색으로 변경합니다. 코드는 다음과 같습니다.

void CMyDialog::OnDtnDropdownDatetimepicker1(NMHDR *pNMHDR, LRESULT *pResult)
{
   UNREFERENCED_PARAMETER(pNMHDR);

   //set the background color of the month to gray
   COLORREF clr = RGB(100, 100, 100);

   m_DateTimeCtrl.SetMonthCalColor(MCSC_MONTHBK, clr);

   *pResult = 0;
}

앞에서 설명한 대로 포함된 컨트롤이 해제되면 두 가지 예외를 제외하고 월 달력 컨트롤의 속성에 대한 모든 수정 사항이 손실됩니다. 첫 번째 예외인 월 달력 컨트롤의 색이 이미 설명되어 있습니다. 두 번째 예외는 월 달력 컨트롤에서 사용하는 글꼴입니다. CDateTimeCtrl::SetMonthCalFont를 호출하고 기존 글꼴의 핸들을 전달하여 기본 글꼴을 수정할 수 있습니다. 다음 예제( m_dtPicker 여기서 날짜 및 시간 제어 개체)는 가능한 한 가지 방법을 보여 줍니다.


//create and initialize the font to be used
LOGFONT logFont = {0};
logFont.lfHeight = -12;
logFont.lfWeight = FW_NORMAL;
logFont.lfCharSet = DEFAULT_CHARSET;
_tcscpy_s(logFont.lfFaceName, _countof(logFont.lfFaceName),
          _T("Verdana"));

m_MonthCalFont.CreateFontIndirect(&logFont);
m_DateTimeCtrl.SetMonthCalFont(m_MonthCalFont);

글꼴이 변경되면 호출 CDateTimeCtrl::SetMonthCalFont과 함께 새 글꼴이 저장되고 다음 달 달력이 표시될 때 사용됩니다.

참고 항목

CDateTimeCtrl 사용
컨트롤