Поделиться через


Доступ к внедренный элемент управления "Календарь на месяц"

Внедренный объект элемента управления " календарь на месяц " можно получить доступ из объекта CDateTimeCtrl, вызвав функцию-член GetMonthCalCtrl.

ПримечаниеПримечание

Внедренный элемент управления " календарь на месяц " используется, только если элемент управления " выбор даты и времени " не имеет стиля 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;
}

Как упоминалось ранее, любые изменения свойств элемента управления " календарь на месяц " потеряны и 2 исключениями, если внедренный элемент управления закрыт.Первое исключение, цвета элемента управления " календарь на месяц ", уже отмечалось.Второе исключение, шрифт, используемый элементом управления " календарь на месяц ".Можно изменить шрифт по умолчанию путем вызова 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

Основные понятия

Элементы управления (MFC)