Класс CMonthCalCtrl

Инкапсулирует функциональность элемента управления "календарь месяца".

Синтаксис

class CMonthCalCtrl : public CWnd

Участники

Открытые конструкторы

Имя Описание
CMonthCalCtrl::CMonthCalCtrl Формирует объект CMonthCalCtrl.

Открытые методы

Имя Описание
CMonthCalCtrl::Create Создает элемент управления календаря месяца и присоединяет его к объекту CMonthCalCtrl .
CMonthCalCtrl::GetCalendarBorder Извлекает ширину границы текущего элемента управления календаря месяца.
CMonthCalCtrl::GetCalendarCount Извлекает количество календарей, отображаемых в элементе управления текущим месяцем.
CMonthCalCtrl::GetCalendarGridInfo Извлекает сведения об элементе управления календарем текущего месяца.
CMonthCalCtrl::GetCalID Извлекает идентификатор календаря для элемента управления календарем текущего месяца.
CMonthCalCtrl::GetColor Возвращает цвет указанной области элемента управления календаря месяца.
CMonthCalCtrl::GetCurrentView Извлекает представление, которое в настоящее время отображается элементом управления календаря текущего месяца.
CMonthCalCtrl::GetCurSel Извлекает системное время, указанное датой, выбранной в данный момент.
CMonthCalCtrl::GetFirstDayOfWeek Возвращает первый день недели, отображаемый в самом левом столбце календаря.
CMonthCalCtrl::GetMaxSelCount Извлекает текущее максимальное количество дней, которые можно выбрать в элементе управления календарем месяца.
CMonthCalCtrl::GetMaxTodayWidth Извлекает максимальную ширину строки "Сегодня" для элемента управления календаря текущего месяца.
CMonthCalCtrl::GetMinReqRect Извлекает минимальный размер, необходимый для отображения полного месяца в элементе управления календарем месяца.
CMonthCalCtrl::GetMonthDelta Извлекает частоту прокрутки для элемента управления календаря месяца.
CMonthCalCtrl::GetMonthRange Извлекает сведения о дате, представляющие высокие и низкие ограничения отображения элемента управления календарем месяца.
CMonthCalCtrl::GetRange Извлекает текущие минимальные и максимальные даты, заданные в элементе управления календарем месяца.
CMonthCalCtrl::GetSelRange Извлекает сведения о дате, представляющие верхние и нижние пределы диапазона дат, выбранного пользователем.
CMonthCalCtrl::GetToday Извлекает сведения о дате, указанной как "сегодня" для элемента управления календарем месяца.
CMonthCalCtrl::HitTest Определяет, какой раздел элемента управления календаря месяца находится в заданной точке на экране.
CMonthCalCtrl::IsCenturyView Указывает, является ли текущее представление элемента управления календарем текущего месяца представлением века.
CMonthCalCtrl::IsDecadeView Указывает, является ли текущее представление элемента управления календарем текущего месяца представлением десятилетия.
CMonthCalCtrl::IsMonthView Указывает, является ли текущее представление элемента управления календарем текущего месяца представлением месяца.
CMonthCalCtrl::IsYearView Указывает, является ли текущее представление элемента управления календарем текущего месяца представлением года.
CMonthCalCtrl::SetCalendarBorder Задает ширину границы текущего элемента управления календаря месяца.
CMonthCalCtrl::SetCalendarBorderDefault Задает ширину границы текущего элемента управления календаря месяца по умолчанию.
CMonthCalCtrl::SetCalID Задает идентификатор календаря для элемента управления календарем текущего месяца.
CMonthCalCtrl::SetCenturyView Задает элемент управления календаря текущего месяца для отображения представления века.
CMonthCalCtrl::SetColor Задает цвет указанной области элемента управления календаря месяца.
CMonthCalCtrl::SetCurrentView Задает элемент управления календаря текущего месяца для отображения указанного представления.
CMonthCalCtrl::SetCurSel Задает выбранную дату для элемента управления календарем месяца.
CMonthCalCtrl::SetDayState Задает отображение в течение дней в элементе управления календаря месяца.
CMonthCalCtrl::SetDecadeView Задает элемент управления календаря текущего месяца в представлении десятилетия.
CMonthCalCtrl::SetFirstDayOfWeek Задает день недели, отображаемый в левом столбце календаря.
CMonthCalCtrl::SetMaxSelCount Задает максимальное количество дней, которые можно выбрать в элементе управления календарем месяца.
CMonthCalCtrl::SetMonthDelta Задает частоту прокрутки для элемента управления календарем месяца.
CMonthCalCtrl::SetMonthView Задает элемент управления календаря текущего месяца для отображения представления месяца.
CMonthCalCtrl::SetRange Задает минимальные и максимальные допустимые даты для элемента управления календарем месяца.
CMonthCalCtrl::SetSelRange Задает для элемента управления календаря месяца заданный диапазон дат.
CMonthCalCtrl::SetToday Задает элемент управления календаря в течение текущего дня.
CMonthCalCtrl::SetYearView Задает для текущего элемента управления календаря текущего месяца представление года.
CMonthCalCtrl::SizeMinReq Переопределяет элемент управления календарем месяца до минимального размера одного месяца.
CMonthCalCtrl::SizeRectToMin Для элемента управления календарем текущего месяца вычисляет наименьший прямоугольник, который может содержать все календари, которые помещаются в указанный прямоугольник.

Замечания

Элемент управления календарем месяца предоставляет пользователю простой интерфейс календаря, из которого пользователь может выбрать дату. Пользователь может изменить отображение следующими способами:

  • Прокрутка назад и вперед, от месяца до месяца.

  • Щелкнув текст "Сегодня", чтобы отобразить текущий день (если стиль MCS_NOTODAY не используется).

  • Выбор месяца или года в всплывающем меню.

Вы можете настроить элемент управления календарем месяца, применяя различные стили к объекту при его создании. Эти стили описаны в стилях элементов управления "Календарь месяца" в пакете SDK для Windows.

Элемент управления календарем месяца может отображать более одного месяца, и он может указывать специальные дни (например, праздники), полужирным шрифтом даты.

Дополнительные сведения об использовании элемента управления календарем месяца см. в разделе "Использование CMonthCalCtrl".

Иерархия наследования

CObject

CCmdTarget

CWnd

CMonthCalCtrl

Требования

Заголовок: afxdtctl.h

CMonthCalCtrl::CMonthCalCtrl

Формирует объект CMonthCalCtrl.

CMonthCalCtrl();

Замечания

После создания объекта необходимо вызвать Create .

CMonthCalCtrl::Create

Создает элемент управления календаря месяца и присоединяет его к объекту CMonthCalCtrl .

virtual BOOL Create(
    DWORD dwStyle,
    const RECT& rect,
    CWnd* pParentWnd,
    UINT nID);

virtual BOOL Create(
    DWORD dwStyle,
    const POINT& pt,
    CWnd* pParentWnd,
    UINT nID);

Параметры

dwStyle
Задает сочетание стилей Windows, применяемых к элементу управления календаря месяца. Дополнительные сведения о стилях элементов управления "Календарь месяца" см. в пакете SDK для Windows.

rect
Ссылка на структуру RECT . Содержит положение и размер элемента управления календаря месяца.

пт
Ссылка на структуру POINT , которая определяет расположение элемента управления календарем месяца.

pParentWnd
Указатель на объект CWnd , который является родительским окном элемента управления календаря месяца. Он не должен иметь значение NULL.

Nid
Указывает идентификатор элемента управления календаря месяца.

Возвращаемое значение

Ненулевое значение, если инициализация была успешной; в противном случае — 0.

Замечания

Создайте элемент управления календаря месяца двумя шагами:

  1. Вызовите CMonthCalCtrl для создания CMonthCalCtrl объекта.

  2. Вызовите эту функцию-член, которая создает элемент управления календарем месяца и присоединяет его к объекту CMonthCalCtrl .

При вызове Createобщие элементы управления инициализированы. Версия Create вызова определяет размер:

  • Для автоматического размера элемента управления MFC до одного месяца вызовите переопределение, использующее параметр pt .

  • Чтобы самостоятельно установить размер элемента управления, вызовите переопределение этой функции, которая использует параметр rect .

Пример

// Given two member objects m_calCtrl1 and m_calCtrl2, we can
// create them in one of two ways.

// Providing a point has the control with its top-left corner
// at that point and sized automatically to show one month
// page.

CPoint pt(10, 10);
VERIFY(m_calCtrl1.Create(WS_TABSTOP | WS_CHILD | WS_VISIBLE |
                             WS_BORDER | MCS_DAYSTATE,
                         pt, this, IDC_MONTHCALCTRL1));

// Providing a rectangle lets us completely control the size.
// The control will paint as many complete month pages in the
// control's area as possible.

CRect rect(300, 100, 470, 200);
VERIFY(m_calCtrl2.Create(WS_TABSTOP | WS_CHILD | WS_VISIBLE |
                             WS_BORDER | MCS_MULTISELECT,
                         rect, this, IDC_MONTHCALCTRL2));

CMonthCalCtrl::GetCalendarBorder

Извлекает ширину границы текущего элемента управления календаря месяца.

int GetCalendarBorder() const;

Возвращаемое значение

Ширина границы элемента управления в пикселях.

Замечания

Этот метод отправляет сообщение MCM_GETCALENDARBORDER , описанное в пакете SDK для Windows.

CMonthCalCtrl::GetCalendarCount

Извлекает количество календарей, отображаемых в элементе управления текущим месяцем.

int GetCalendarCount() const;

Возвращаемое значение

Количество календарей, отображаемых в элементе управления календарем месяца. Максимально допустимое число календарей — 12.

Замечания

Этот метод отправляет сообщение MCM_GETCALENDARCOUNT , описанное в пакете SDK для Windows.

CMonthCalCtrl::GetCalendarGridInfo

Извлекает сведения об элементе управления календарем текущего месяца.

BOOL GetCalendarGridInfo(PMCGRIDINFO pmcGridInfo) const;

Параметры

pmcGridInfo
[out] Указатель на структуру MCGRIDINFO , которая получает сведения об элементе управления календарем текущего месяца. Вызывающий объект отвечает за выделение и инициализацию этой структуры.

Возвращаемое значение

ЗНАЧЕНИЕ TRUE, если этот метод выполнен успешно; в противном случае — ЗНАЧЕНИЕ FALSE.

Замечания

Этот метод отправляет сообщение MCM_GETCALENDARGRIDINFO , описанное в пакете SDK для Windows.

Пример

Первый пример кода определяет переменную, m_monthCalCtrlкоторая используется для программного доступа к элементу управления календарем месяца. Эта переменная используется в следующем примере.

// Variable used to reference the month calendar control.
CMonthCalCtrl m_monthCalCtrl;
// Variable used to reference the splitbutton control.
CSplitButton m_splitButton;

Следующий пример кода использует GetCalendarGridInfo метод для получения даты календаря, отображаемой элементом управления текущим месяцем.

WCHAR name[26];
name[0] = _T('\0');
MCGRIDINFO gridInfo;
gridInfo.cbSize = sizeof(MCGRIDINFO);
gridInfo.dwPart = MCGIP_CALENDARHEADER;
gridInfo.dwFlags = MCGIF_NAME;
gridInfo.iCalendar = 0;
gridInfo.pszName = reinterpret_cast<PWSTR>(&name);
gridInfo.cchName = sizeof(name);

m_monthCalCtrl.GetCalendarGridInfo(&gridInfo);

CString str;
CString calendarDate(name);
str.Format(_T("Calendar date: '%s'"), calendarDate);
AfxMessageBox(str, MB_ICONINFORMATION);

CMonthCalCtrl::GetCalID

Извлекает идентификатор календаря для элемента управления календарем текущего месяца.

CALID GetCalID() const;

Возвращаемое значение

Одна из констант идентификатора календаря .

Замечания

Идентификатор календаря обозначает определенный регионом календарь, например григорианский (локализованный), японский или Хиджри. Приложение может использовать идентификатор календаря с различными функциями поддержки языка.

Этот метод отправляет сообщение MCM_GETCALID , описанное в пакете SDK для Windows.

CMonthCalCtrl::GetColor

Извлекает цвет области элемента управления календаря месяца, заданного nRegion.

COLORREF GetColor(int nRegion) const;

Параметры

nRegion
Область элемента управления календаря месяца, из которого извлекается цвет. Список значений см. в параметре nRegion setColor.

Возвращаемое значение

Значение COLORREF , указывающее цвет, связанный с частью элемента управления календаря месяца, если выполнен успешно. В противном случае эта функция-член возвращает -1.

CMonthCalCtrl::GetCurrentView

Извлекает представление, которое в настоящее время отображается элементом управления календаря текущего месяца.

DWORD GetCurrentView() const;

Возвращаемое значение

Текущее представление, указываемое одним из следующих значений:

Значение Значение
MCMV_MONTH Ежемесячное представление
MCMV_YEAR Ежегодное представление
MCMV_DECADE Представление "Десять лет"
MCMV_CENTURY Представление века

Замечания

Этот метод отправляет сообщение MCM_GETCURRENTVIEW , описанное в пакете SDK для Windows.

Пример

Первый пример кода определяет переменную, m_monthCalCtrlкоторая используется для программного доступа к элементу управления календарем месяца. Эта переменная используется в следующем примере.

// Variable used to reference the month calendar control.
CMonthCalCtrl m_monthCalCtrl;
// Variable used to reference the splitbutton control.
CSplitButton m_splitButton;

В следующем примере кода отображается элемент управления календарем месяца.

CString str;
CString msg = _T("The current calendar displays %s view.");
DWORD view = m_monthCalCtrl.GetCurrentView();
switch (view)
{
case MCMV_MONTH:
   str.Format(msg, _T("month"));
   break;
case MCMV_YEAR:
   str.Format(msg, _T("year"));
   break;
case MCMV_DECADE:
   str.Format(msg, _T("decade"));
   break;
case MCMV_CENTURY:
   str.Format(msg, _T("century"));
   break;
default:
   str.Format(msg, _T("an unknown"));
   break;
}
AfxMessageBox(str, MB_ICONINFORMATION);

CMonthCalCtrl::GetCurSel

Извлекает системное время, указанное датой, выбранной в данный момент.

BOOL GetCurSel(COleDateTime& refDateTime) const;  BOOL GetCurSel(CTime& refDateTime) const;

BOOL GetCurSel(LPSYSTEMTIME pDateTime) const;

Параметры

refDateTime
Ссылка на объект COleDateTime или объект CTime. Получает текущее время.

pDateTime
Указатель на структуру SYSTEMTIME , которая будет получать сведения о дате, выбранной в данный момент. Этот параметр должен быть допустимым адресом и не может иметь значение NULL.

Возвращаемое значение

Ненулевое значение при успешном выполнении; otherwize 0.

Замечания

Эта функция-член реализует поведение сообщения Win32 MCM_GETCURSEL, как описано в пакете SDK для Windows.

Примечание.

Эта функция-член завершается ошибкой, если задан стиль MCS_MULTISELECT.

В реализации GetCurSelMFC можно указать COleDateTime использование, CTime использование или SYSTEMTIME использование структуры.

CMonthCalCtrl::GetFirstDayOfWeek

Возвращает первый день недели, отображаемый в самом левом столбце календаря.

int GetFirstDayOfWeek(BOOL* pbLocal = NULL) const;

Параметры

pbLocal
Указатель на значение BOOL. Если значение не равно нулю, параметр элемента управления не соответствует параметру на панели управления.

Возвращаемое значение

Целочисленное значение, представляющее первый день недели. Дополнительные сведения об этих целых числах см . в примечаниях .

Замечания

Эта функция-член реализует поведение сообщения Win32 MCM_GETFIRSTDAYOFWEEK, как описано в пакете SDK для Windows. Дни недели представлены как целые числа, как показано ниже.

Значение День недели
0 Понедельник
1 Вторник
2 Среда
3 Четверг
4 Пятница
5 Суббота
6 Воскресенье

Пример

См. пример CMonthCalCtrl ::SetFirstDayOfWeek.

CMonthCalCtrl::GetMaxSelCount

Извлекает текущее максимальное количество дней, которые можно выбрать в элементе управления календарем месяца.

int GetMaxSelCount() const;

Возвращаемое значение

Целочисленное значение, представляющее общее количество дней, которые можно выбрать для элемента управления.

Замечания

Эта функция-член реализует поведение сообщения Win32 MCM_GETMAXSELCOUNT, как описано в пакете SDK для Windows. Используйте эту функцию-член для элементов управления с набором стилей MCS_MULTISELECT.

Пример

См. пример CMonthCalCtrl ::SetMaxSelCount.

CMonthCalCtrl::GetMaxTodayWidth

Извлекает максимальную ширину строки "Сегодня" для элемента управления календаря текущего месяца.

DWORD GetMaxTodayWidth() const;

Возвращаемое значение

Ширина строки "Сегодня" в пикселях.

Пример

Первый пример кода определяет переменную, m_monthCalCtrlкоторая используется для программного доступа к элементу управления календарем месяца. Эта переменная используется в следующем примере.

// Variable used to reference the month calendar control.
CMonthCalCtrl m_monthCalCtrl;
// Variable used to reference the splitbutton control.
CSplitButton m_splitButton;

В следующем примере кода демонстрируется GetMaxTodayWidth метод.

DWORD width = m_monthCalCtrl.GetMaxTodayWidth();
CString str;
str.Format(_T("The maximum today width is %d."), width);
AfxMessageBox(str, MB_ICONINFORMATION);

Замечания

Пользователь может вернуться к текущей дате, щелкнув строку "Сегодня", которая отображается в нижней части элемента управления календаря месяца. Строка "Сегодня" содержит текст метки и текст даты.

Этот метод отправляет сообщение MCM_GETMAXTODAYWIDTH , описанное в пакете SDK для Windows.

CMonthCalCtrl::GetMinReqRect

Извлекает минимальный размер, необходимый для отображения полного месяца в элементе управления календарем месяца.

BOOL GetMinReqRect(RECT* pRect) const;

Параметры

pRect
Указатель на структуру RECT, которая получит ограничивающие данные прямоугольника. Этот параметр должен быть допустимым адресом и не может иметь значение NULL.

Возвращаемое значение

В случае успешного выполнения эта функция-член возвращает ненулевое значение и lpRect получает применимые ограничивающие сведения. Если функция-член не выполнена, функция-член возвращает значение 0.

Замечания

Эта функция-член реализует поведение MCM_GETMINREQRECT сообщения Win32, как описано в пакете SDK для Windows.

CMonthCalCtrl::GetMonthDelta

Извлекает частоту прокрутки для элемента управления календаря месяца.

int GetMonthDelta() const;

Возвращаемое значение

Скорость прокрутки для элемента управления календарем месяца. Скорость прокрутки — это количество месяцев, которое элемент управления перемещает его отображение, когда пользователь нажимает кнопку прокрутки один раз.

Замечания

Эта функция-член реализует поведение сообщения Win32 MCM_GETMONTHDELTA, как описано в пакете SDK для Windows.

CMonthCalCtrl::GetMonthRange

Извлекает сведения о дате, представляющие высокие и низкие ограничения отображения элемента управления календарем месяца.

int GetMonthRange(
    COleDateTime& refMinRange,
    COleDateTime& refMaxRange,
    DWORD dwFlags) const;

int GetMonthRange(
    CTime& refMinRange,
    CTime& refMaxRange,
    DWORD dwFlags) const;

int GetMonthRange(
    LPSYSTEMTIME pMinRange,
    LPSYSTEMTIME pMaxRange,
    DWORD dwFlags) const;

Параметры

refMinRange
Ссылка на объект COleDateTime или CTime, содержащий минимальную дату.

refMaxRange
Ссылка на COleDateTime объект или CTime объект с максимально допустимой датой.

pMinRange
Указатель на структуру SYSTEMTIME , содержащую дату в нижнем конце диапазона.

pMaxRange
Указатель на SYSTEMTIME структуру, содержащую дату в самом верхнем конце диапазона.

dwFlags
Значение, указывающее область пределов диапазона, которые необходимо извлечь. Это значение должно быть одним из следующих значений.

Значение Значение
GMR_DAYSTATE Включите предыдущие и конечные месяцы видимого диапазона, которые отображаются только частично.
GMR_VISIBLE Включите только те месяцы, которые полностью отображаются.

Возвращаемое значение

Целое число, представляющее диапазон в месяцах, охватываемое двумя ограничениями, указанными refMinRange и refMaxRange в первой и второй версиях, или pMinRange и pMaxRange в третьей версии.

Замечания

Эта функция-член реализует поведение сообщения Win32 MCM_GETMONTHRANGE, как описано в пакете SDK для Windows. В реализации GetMonthRangeMFC можно указать COleDateTime использование, CTime использование или SYSTEMTIME использование структуры.

Пример

См. пример CMonthCalCtrl ::SetDayState.

CMonthCalCtrl::GetRange

Извлекает текущие минимальные и максимальные даты, заданные в элементе управления календарем месяца.

DWORD GetRange(
    COleDateTime* pMinRange,
    COleDateTime* pMaxRange) const;

DWORD GetRange(
    CTime* pMinRange,
    CTime* pMaxRange) const;

DWORD GetRange(
    LPSYSTEMTIME pMinRange,
    LPSYSTEMTIME pMaxRange) const;

Параметры

pMinRange
Указатель на COleDateTime объект, CTime объект или структуру SYSTEMTIME , содержащую дату в нижнем конце диапазона.

pMaxRange
Указатель на COleDateTime объект, объект или структуру SYSTEMTIME, CTime содержащую дату в самом высоком конце диапазона.

Возвращаемое значение

DWORD, который может быть нулевым (ограничения не заданы) или сочетание следующих значений, указывающих сведения об ограничении.

Значение Значение
GDTR_MAX Для элемента управления устанавливается максимальное ограничение; pMaxRange действителен и содержит применимые сведения о дате.
GDTR_MIN Для элемента управления устанавливается минимальное ограничение; pMinRange является допустимым и содержит применимые сведения о дате.

Замечания

Эта функция-член реализует поведение сообщения Win32 MCM_GETRANGE, как описано в пакете SDK для Windows. В реализации GetRangeMFC можно указать COleDateTime использование, CTime использование или SYSTEMTIME использование структуры.

Пример

// This code fragment sets a variety of ranges in the
// control, and calls a separate function to show the
// set range to the user.

void CMonthCalDlg::OnBnClickedRangebutton()
{
   // set minimum of January 1st, 1995 with no maximum
   COleDateTime dtMin;
   COleDateTime dtMax;

   dtMin = COleDateTime(1995, 1, 1, 0, 0, 0);
   dtMax.SetStatus(COleDateTime::null);
   m_calCtrl1.SetRange(&dtMin, &dtMax);
   ShowRange(&m_calCtrl1);

   // set no minimum and a maximum of September 30th, 1997
   dtMin.SetStatus(COleDateTime::null);
   dtMax = COleDateTime(1997, 9, 30, 0, 0, 0);
   m_calCtrl1.SetRange(&dtMin, &dtMax);
   ShowRange(&m_calCtrl1);

   // set minimum of April 15, 1992 and maximum of June 5, 2002
   dtMin = COleDateTime(1992, 4, 15, 0, 0, 0);
   dtMax = COleDateTime(2002, 6, 5, 0, 0, 0);
   m_calCtrl1.SetRange(&dtMin, &dtMax);
   ShowRange(&m_calCtrl1);
}

void CMonthCalDlg::ShowRange(CMonthCalCtrl *pMoCalCtrl)
{
   ASSERT(pMoCalCtrl != NULL);
   CString strMessage;
   COleDateTime dtMinimum;
   COleDateTime dtMaximum;

   // Get the range
   DWORD dwResult = pMoCalCtrl->GetRange(&dtMinimum, &dtMaximum);

   // If a minimum was specified, format it
   // otherwise, indicate that there is no lower bound
   if (dwResult & GDTR_MIN)
      strMessage += dtMinimum.Format(_T("Minimum range is %x %X.\r\n"));
   else
      strMessage += _T("No minimum range.\r\n");

   // Treat maximum similarly
   if (dwResult & GDTR_MAX)
      strMessage += dtMaximum.Format(_T("Maximum range is %x %X.\r\n"));
   else
      strMessage += _T("No maximum range.\r\n");

   // Show the user
   AfxMessageBox(strMessage);
}

CMonthCalCtrl::GetSelRange

Извлекает сведения о дате, представляющие верхние и нижние пределы диапазона дат, выбранного пользователем.

BOOL GetSelRange(
    COleDateTime& refMinRange,
    COleDateTime& refMaxRange) const;

BOOL GetSelRange(
    CTime& refMinRange,
    CTime& refMaxRange) const;

BOOL GetSelRange(
    LPSYSTEMTIME pMinRange,
    LPSYSTEMTIME pMaxRange) const;

Параметры

refMinRange
Ссылка на объект COleDateTime или CTime, содержащий минимальную дату.

refMaxRange
Ссылка на COleDateTime объект или CTime объект с максимально допустимой датой.

pMinRange
Указатель на структуру SYSTEMTIME , содержащую дату в нижнем конце диапазона.

pMaxRange
Указатель на SYSTEMTIME структуру, содержащую дату в самом верхнем конце диапазона.

Возвращаемое значение

Имеет ненулевое значение в случае успешного выполнения, иначе — 0.

Замечания

Эта функция-член реализует поведение MCM_GETSELRANGE сообщения Win32, как описано в пакете SDK для Windows. GetSelRange Ошибка при применении к элементу управления календаря месяца, который не использует стиль MCS_MULTISELECT.

В реализации GetSelRangeMFC можно указать COleDateTime использование, CTime использование или SYSTEMTIME использование структуры.

CMonthCalCtrl::GetToday

Извлекает сведения о дате, указанной как "сегодня" для элемента управления календарем месяца.

BOOL GetToday(COleDateTime& refDateTime) const;  BOOL GetToday(COleDateTime& refDateTime) const;

BOOL GetToday(LPSYSTEMTIME pDateTime) const;

Параметры

refDateTime
Ссылка на объект COleDateTime или CTime, указывающий текущий день.

pDateTime
Указатель на структуру SYSTEMTIME , которая будет получать сведения о дате. Этот параметр должен быть допустимым адресом и не может иметь значение NULL.

Возвращаемое значение

Имеет ненулевое значение в случае успешного выполнения, иначе — 0.

Замечания

Эта функция-член реализует поведение сообщения Win32 MCM_GETTODAY, как описано в пакете SDK для Windows. В реализации GetTodayMFC можно указать COleDateTime использование, CTime использование или SYSTEMTIME использование структуры.

Пример

void CMonthCalDlg::OnBnClickedGettodaybutton()
{
   COleDateTime timeToday;
   if (m_calCtrl1.GetToday(timeToday))
   {
      // Format the date information from the value we received
      // and post a message box about it.
      CString str = timeToday.Format(VAR_DATEVALUEONLY);
      AfxMessageBox(str);

      // Set the control's "today" indicator to be five
      // days previous.
      timeToday -= 5;
      m_calCtrl1.SetToday(timeToday);
   }
   else
   {
      // Something is wrong!
      ASSERT(FALSE);
   }
}

CMonthCalCtrl::HitTest

Определяет, какой элемент управления календарем месяца (если таковой) находится в указанной позиции.

DWORD HitTest(PMCHITTESTINFO pMCHitTest);

Параметры

pMCHitTest
Указатель на структуру MCHITTESTINFO , содержащую точки тестирования попадания для элемента управления календарем месяца.

Возвращаемое значение

Значение DWORD. Равно члену MCHITTESTINFO uHit структуры.

Замечания

HitTest использует структуру MCHITTESTINFO , содержащую сведения о тесте попадания.

CMonthCalCtrl::IsCenturyView

Указывает, является ли текущее представление элемента управления календарем текущего месяца представлением века.

BOOL IsCenturyView() const;

Возвращаемое значение

ЗНАЧЕНИЕ TRUE, если текущее представление является представлением века; в противном случае — ЗНАЧЕНИЕ FALSE.

Замечания

Этот метод отправляет сообщение MCM_GETCURRENTVIEW , описанное в пакете SDK для Windows. Если это сообщение возвращает MCMV_CENTURY, этот метод возвращает ЗНАЧЕНИЕ TRUE.

CMonthCalCtrl::IsDecadeView

Указывает, является ли текущее представление элемента управления календарем текущего месяца представлением десятилетия.

BOOL IsDecadeView() const;

Возвращаемое значение

ЗНАЧЕНИЕ TRUE, если текущее представление является представлением десятилетия; в противном случае — ЗНАЧЕНИЕ FALSE.

Замечания

Этот метод отправляет сообщение MCM_GETCURRENTVIEW , описанное в пакете SDK для Windows. Если это сообщение возвращает MCMV_DECADE, этот метод возвращает ЗНАЧЕНИЕ TRUE.

CMonthCalCtrl::IsMonthView

Указывает, является ли текущее представление элемента управления календарем текущего месяца представлением месяца.

BOOL IsMonthView() const;

Возвращаемое значение

ЗНАЧЕНИЕ TRUE, если текущее представление является представлением месяца; в противном случае — ЗНАЧЕНИЕ FALSE.

Замечания

Этот метод отправляет сообщение MCM_GETCURRENTVIEW , описанное в пакете SDK для Windows. Если это сообщение возвращает MCMV_MONTH, этот метод возвращает ЗНАЧЕНИЕ TRUE.

CMonthCalCtrl::IsYearView

Указывает, является ли текущее представление элемента управления календарем текущего месяца представлением года.

BOOL IsYearView() const;

Возвращаемое значение

ЗНАЧЕНИЕ TRUE, если текущее представление является представлением года; в противном случае — ЗНАЧЕНИЕ FALSE.

Замечания

Этот метод отправляет сообщение MCM_GETCURRENTVIEW , описанное в пакете SDK для Windows. Если это сообщение возвращает MCMV_YEAR, этот метод возвращает ЗНАЧЕНИЕ TRUE.

CMonthCalCtrl::SetCalendarBorder

Задает ширину границы текущего элемента управления календаря месяца.

void SetCalendarBorder(int cxyBorder);

Параметры

cxyBorder
[in] Ширина границы в пикселях.

Замечания

Если этот метод выполнен успешно, ширина границы устанавливается в параметр cxyBorder . В противном случае ширина границы сбрасывается на значение по умолчанию, указанное текущей темой, или ноль, если темы не используются.

Этот метод отправляет сообщение MCM_SETCALENDARBORDER , описанное в пакете SDK для Windows.

Пример

Первый пример кода определяет переменную, m_monthCalCtrlкоторая используется для программного доступа к элементу управления календарем месяца. Эта переменная используется в следующем примере.

// Variable used to reference the month calendar control.
CMonthCalCtrl m_monthCalCtrl;
// Variable used to reference the splitbutton control.
CSplitButton m_splitButton;

Следующий пример кода задает ширину границы элемента управления календаря месяца на восемь пикселей. Используйте метод CMonthCalCtrl::GetCalendarBorder, чтобы определить, успешно ли выполнен этот метод.

// Use the GetCalendarBorder() method to determine whether
// this method succeeded or failed.
m_monthCalCtrl.SetCalendarBorder(8);

CMonthCalCtrl::SetCalendarBorderDefault

Задает ширину границы текущего элемента управления календаря месяца по умолчанию.

void SetCalendarBorderDefault();

Замечания

Ширина границы имеет значение по умолчанию, указанное текущей темой, или ноль, если темы не используются.

Этот метод отправляет сообщение MCM_SETCALENDARBORDER , описанное в пакете SDK для Windows.

CMonthCalCtrl::SetCalID

Задает идентификатор календаря для элемента управления календарем текущего месяца.

BOOL SetCalID(CALID calid);

Параметры

calid
[in] Одна из констант идентификатора календаря .

Возвращаемое значение

ЗНАЧЕНИЕ TRUE, если этот метод выполнен успешно; в противном случае — ЗНАЧЕНИЕ FALSE.

Замечания

Идентификатор календаря задает определенный регион календарь, например григорианский (локализованный), японский или Хиджри. SetCalID Используйте метод для отображения календаря, указанного параметром calid, если языковой стандарт, содержащий календарь, установлен на компьютере.

Этот метод отправляет сообщение MCM_SETCALID , описанное в пакете SDK для Windows.

Пример

Первый пример кода определяет переменную, m_monthCalCtrlкоторая используется для программного доступа к элементу управления календарем месяца. Эта переменная используется в следующем примере.

// Variable used to reference the month calendar control.
CMonthCalCtrl m_monthCalCtrl;
// Variable used to reference the splitbutton control.
CSplitButton m_splitButton;

Следующий пример кода задает элемент управления календарем месяца для отображения календаря японского императора Эры. Метод SetCalID выполняется успешно, только если этот календарь установлен на компьютере.

BOOL rc = m_monthCalCtrl.SetCalID(CAL_JAPAN);
CString str = _T("Calendar change ");
;
if (rc == TRUE)
   str += _T("succeeded.");
else
{
   str += _T("failed.\n");
   str += _T("Perhaps this locale is not installed.");
}
AfxMessageBox(str, MB_ICONINFORMATION);

CMonthCalCtrl::SetCenturyView

Задает элемент управления календаря текущего месяца для отображения представления века.

BOOL SetCenturyView();

Возвращаемое значение

ЗНАЧЕНИЕ TRUE, если этот метод выполнен успешно; в противном случае — ЗНАЧЕНИЕ FALSE.

Замечания

Этот метод использует метод CMonthCalCtrl::SetCurrentView для задания представления MCMV_CENTURY, представляющего представление века.

CMonthCalCtrl::SetColor

Задает цвет указанной области элемента управления календаря месяца.

COLORREF SetColor(
    int nRegion,
    COLORREF ref);

Параметры

nRegion
Целочисленное значение, указывающее, какой цвет календаря месяца необходимо задать. Это значение может быть одним из следующих значений.

Значение Значение
MCSC_BACKGROUND Цвет фона, отображаемый между месяцами.
MCSC_MONTHBK Цвет фона, отображаемый в течение месяца.
MCSC_TEXT Цвет, используемый для отображения текста в течение месяца.
MCSC_TITLEBK Цвет фона, отображаемый в заголовке календаря.
MCSC_TITLETEXT Цвет, используемый для отображения текста в заголовке календаря.
MCSC_TRAILINGTEXT Цвет, используемый для отображения заголовка и текста в конечную день. Заголовок и конечные дни — это дни с предыдущих и следующих месяцев, которые отображаются в текущем календаре.

ref;
Значение COLORREF для нового параметра цвета для указанной части элемента управления календаря месяца.

Возвращаемое значение

Значение COLORREF, представляющее предыдущий параметр цвета для указанной части элемента управления календаря месяца в случае успешного выполнения. В противном случае это сообщение возвращает значение -1.

Замечания

Эта функция-член реализует поведение сообщения Win32 MCM_SETCOLOR, как описано в пакете SDK для Windows.

Пример

// Set colors for title text and title background to match
// the Control Panel settings for inactive window captions.
m_calCtrl1.SetColor(MCSC_TITLETEXT, ::GetSysColor(COLOR_INACTIVECAPTIONTEXT));
m_calCtrl1.SetColor(MCSC_TITLEBK, ::GetSysColor(COLOR_INACTIVECAPTION));

CMonthCalCtrl::SetCurrentView

Задает элемент управления календаря текущего месяца для отображения указанного представления.

BOOL SetCurrentView(DWORD dwNewView);

Параметры

dwNewView
[in] Одно из следующих значений, указывающее ежемесячное, ежегодное, десятилетие или представление века.

  • MCMV_MONTH: ежемесячное представление
  • MCMV_YEAR: ежегодное представление
  • MCMV_DECADE: десятилетний вид
  • MCMV_CENTURY: представление века

Возвращаемое значение

ЗНАЧЕНИЕ TRUE, если этот метод выполнен успешно; в противном случае — ЗНАЧЕНИЕ FALSE.

Замечания

Этот метод отправляет сообщение MCM_SETCURRENTVIEW , описанное в пакете SDK для Windows.

CMonthCalCtrl::SetCurSel

Задает выбранную дату для элемента управления календарем месяца.

BOOL SetCurSel(const COleDateTime& refDateTime);
BOOL SetCurSel(const CTime& refDateTime);
BOOL SetCurSel(const LPSYSTEMTIME pDateTime);

Параметры

refDateTime
Ссылка на объект COleDateTime или CTime, указывающий элемент управления календарем текущего месяца.

pDateTime
Указатель на структуру SYSTEMTIME , содержащую дату, которую необходимо задать в качестве текущего выбора.

Возвращаемое значение

Имеет ненулевое значение в случае успешного выполнения, иначе — 0.

Замечания

Эта функция-член реализует поведение MCM_SETCURSEL сообщения Win32, как описано в пакете SDK для Windows. В реализации SetCurSelMFC можно указать COleDateTime использование, CTime использование или SYSTEMTIME использование структуры.

Пример

void CMonthCalDlg::OnBnClickedCurselbutton()
{
   // All of these calls set the current selection to March 15, 1998.

   // with a COleDateTime
   COleDateTime dt1(1998, 3, 15, 0, 0, 0);
   m_calCtrl1.SetCurSel(dt1);

   // with a CTime
   CTime dt2(1998, 3, 15, 0, 0, 0);
   m_calCtrl1.SetCurSel(dt2);

   // with a SYSTEMTIME structure

   SYSTEMTIME sysTime;

   // set everything to zero
   memset(&sysTime, 0, sizeof(sysTime));

   // except for the date we want
   sysTime.wYear = 1998;
   sysTime.wMonth = 3;
   sysTime.wDay = 15;

   m_calCtrl1.SetCurSel(&sysTime);
}

CMonthCalCtrl::SetDayState

Задает отображение в течение дней в элементе управления календаря месяца.

BOOL SetDayState(
    int nMonths,
    LPMONTHDAYSTATE pStates);

Параметры

nMonths
Значение, указывающее, сколько элементов в массиве, на который указывает pStates .

pStates
Указатель на массив MONTHDAYSTATE значений, определяющий, как элемент управления календарем месяца будет рисовать каждый день в его отображении. Тип данных MONTHDAYSTATE — это битовое поле, где каждый бит (от 1 до 31) представляет состояние дня в месяц. Если бит включен, соответствующий день будет отображаться полужирным шрифтом; в противном случае он будет отображаться без выделения.

Возвращаемое значение

Имеет ненулевое значение в случае успешного выполнения, иначе — 0.

Замечания

Эта функция-член реализует поведение сообщения Win32 MCM_SETDAYSTATE, как описано в пакете SDK для Windows.

Пример

void CMonthCalDlg::OnBnClickedDaystatebutton()
{
   // First, we must find the visible range. The array we pass to the
   // SetDayState() function must be large enough to hold days for all
   // of the visible months. Even if a month is _partially_ visible,
   // we must have MONTHDAYSTATE data for it in the array we pass.
   // GetMonthRange() returns the range of days currently visible in
   // the control, along with a count of visible months. This array
   // will be up to 2 months larger than the number of "pages" visible
   // in the control.

   SYSTEMTIME timeFrom;
   SYSTEMTIME timeUntil;
   int nCount = m_calCtrl1.GetMonthRange(&timeFrom, &timeUntil, GMR_DAYSTATE);

   // Allocate the state array based on the return value.

   LPMONTHDAYSTATE pDayState;
   pDayState = new MONTHDAYSTATE[nCount];
   memset(pDayState, 0, sizeof(MONTHDAYSTATE) * nCount);

   // Find the first fully visible month.

   int nIndex = (timeFrom.wDay == 1) ? 0 : 1;

   // Set the 4th day, 19th day, and 26th day of the first
   // _fully_ visible month as bold.

   pDayState[nIndex] |= 1 << 3;  // 4th day
   pDayState[nIndex] |= 1 << 18; // 19th day
   pDayState[nIndex] |= 1 << 25; // 25th day

   // Set state and clean up

   VERIFY(m_calCtrl1.SetDayState(nCount, pDayState));
   delete[] pDayState;
}

CMonthCalCtrl::SetDecadeView

Задает элемент управления календаря текущего месяца в представлении десятилетия.

BOOL SetDecadeView();

Возвращаемое значение

ЗНАЧЕНИЕ TRUE, если этот метод выполнен успешно; в противном случае — ЗНАЧЕНИЕ FALSE.

Замечания

Этот метод использует метод CMonthCalCtrl::SetCurrentView для задания представления MCMV_DECADE, представляющего представление десятилетия.

CMonthCalCtrl::SetFirstDayOfWeek

Задает день недели, отображаемый в левом столбце календаря.

BOOL SetFirstDayOfWeek(
    int iDay,
    int* lpnOld = NULL);

Параметры

iDay
Целочисленное значение, представляющее, какой день должен быть задан в качестве первого дня недели. Это значение должно быть одним из чисел дня. Описание чисел дня см. в разделе GetFirstDayOfWeek .

lpnOld
Указатель на целое число, указывающее первый день недели, заданный ранее.

Возвращаемое значение

Ненулевое значение, если предыдущий первый день недели имеет значение, отличное от значения LOCALE_IFIRSTDAYOFWEEK, то есть день, указанный в параметре панели управления. В противном случае эта функция возвращает значение 0.

Замечания

Эта функция-член реализует поведение сообщения Win32 MCM_SETFIRSTDAYOFWEEK, как описано в пакете SDK для Windows.

Пример

// This work isn't normally necessary, since the control will set
// the day of the week to match the system locale by itself.

// Ask the system for the first day of the week
TCHAR sz[2];
GetLocaleInfo(LOCALE_SYSTEM_DEFAULT, LOCALE_IFIRSTDAYOFWEEK, sz, 2);

// Convert from string result
int nFirstDay = _ttoi(sz);

// Set it and assert that it was successful.
m_calCtrl1.SetFirstDayOfWeek(nFirstDay);
ASSERT(m_calCtrl1.GetFirstDayOfWeek() == nFirstDay);

CMonthCalCtrl::SetMaxSelCount

Задает максимальное количество дней, которые можно выбрать в элементе управления календарем месяца.

BOOL SetMaxSelCount(int nMax);

Параметры

nMax
Значение, которое будет задано для представления максимального количества дней, доступных для выбора.

Возвращаемое значение

Имеет ненулевое значение в случае успешного выполнения, иначе — 0.

Замечания

Эта функция-член реализует поведение сообщения Win32 MCM_SETMAXSELCOUNT, как описано в пакете SDK для Windows.

Пример

// The control needs to have the MCS_MULTISELECT style
// for the following code to work.

// change the maximum selection count
m_calCtrl2.SetMaxSelCount(10);

// check that the change was really made
ASSERT(m_calCtrl2.GetMaxSelCount() == 10);

CMonthCalCtrl::SetMonthDelta

Задает частоту прокрутки для элемента управления календарем месяца.

int SetMonthDelta(int iDelta);

Параметры

iDelta
Количество месяцев, которые необходимо задать в качестве скорости прокрутки элемента управления. Если это значение равно нулю, разность месяца сбрасывается по умолчанию, а это число месяцев, отображаемых в элементе управления.

Возвращаемое значение

Предыдущая скорость прокрутки. Если скорость прокрутки не была задана ранее, возвращаемое значение равно 0.

Замечания

Эта функция-член реализует поведение сообщения Win32 MCM_SETMONTHDELTA, как описано в пакете SDK для Windows.

CMonthCalCtrl::SetMonthView

Задает элемент управления календаря текущего месяца для отображения представления месяца.

BOOL SetMonthView();

Возвращаемое значение

ЗНАЧЕНИЕ TRUE, если этот метод выполнен успешно; в противном случае — ЗНАЧЕНИЕ FALSE.

Замечания

Этот метод использует метод CMonthCalCtrl::SetCurrentView для задания представления MCMV_MONTH, представляющего представление месяца.

Пример

Первый пример кода определяет переменную, m_monthCalCtrlкоторая используется для программного доступа к элементу управления календарем месяца. Эта переменная используется в следующем примере.

// Variable used to reference the month calendar control.
CMonthCalCtrl m_monthCalCtrl;
// Variable used to reference the splitbutton control.
CSplitButton m_splitButton;

Следующий пример кода задает элемент управления календарем месяца для отображения представлений месяца, года, десятилетия и века.

void CCMonthCalCtrl_s1Dlg::OnSetviewSetmonthview()
{
   m_monthCalCtrl.SetMonthView();
}

void CCMonthCalCtrl_s1Dlg::OnSetviewSetyearview()
{
   m_monthCalCtrl.SetYearView();
}

void CCMonthCalCtrl_s1Dlg::OnSetviewSetdecadeview()
{
   m_monthCalCtrl.SetDecadeView();
}

void CCMonthCalCtrl_s1Dlg::OnSetviewSetcenturyview()
{
   m_monthCalCtrl.SetCenturyView();
}

CMonthCalCtrl::SetRange

Задает минимальные и максимальные допустимые даты для элемента управления календарем месяца.

BOOL SetRange(
    const COleDateTime* pMinRange,
    const COleDateTime* pMaxRange);

BOOL SetRange(
    const CTime* pMinRange,
    const CTime* pMaxRange);

BOOL SetRange(
    const LPSYSTEMTIME pMinRange,
    const LPSYSTEMTIME pMaxRange);

Параметры

pMinRange
Указатель на COleDateTime объект, CTime объект или структуру SYSTEMTIME , содержащую дату в нижнем конце диапазона.

pMaxRange
Указатель на COleDateTime объект, объект или SYSTEMTIME структуру, CTime содержащую дату в самом высоком конце диапазона.

Возвращаемое значение

Имеет ненулевое значение в случае успешного выполнения, иначе — 0.

Замечания

Эта функция-член реализует поведение сообщения Win32 MCM_SETRANGE, как описано в пакете SDK для Windows. В реализации SetRangeMFC можно указать COleDateTime использование, CTime использование или SYSTEMTIME использование структуры.

Пример

См. пример CMonthCalCtrl ::GetRange.

CMonthCalCtrl::SetSelRange

Задает для элемента управления календаря месяца заданный диапазон дат.

BOOL SetSelRange(
    const COleDateTime& pMinRange,
    const COleDateTime& pMaxRange);

BOOL SetSelRange(
    const CTime& pMinRange,
    const CTime& pMaxRange);

BOOL SetSelRange(
    const LPSYSTEMTIME pMinRange,
    const LPSYSTEMTIME pMaxRange);

Параметры

pMinRange
Указатель на COleDateTime объект, CTime объект или структуру SYSTEMTIME , содержащую дату в нижнем конце диапазона.

pMaxRange
Указатель на COleDateTime объект, объект или SYSTEMTIME структуру, CTime содержащую дату в самом высоком конце диапазона.

Возвращаемое значение

Имеет ненулевое значение в случае успешного выполнения, иначе — 0.

Замечания

Эта функция-член реализует поведение сообщения Win32 MCM_SETSELRANGE, как описано в пакете SDK для Windows. В реализации SetSelRangeMFC можно указать COleDateTime использование, CTime использование или SYSTEMTIME использование структуры.

CMonthCalCtrl::SetToday

Задает элемент управления календаря в течение текущего дня.

void SetToday(const COleDateTime& refDateTime);
void SetToday(const CTime* pDateTime);
void SetToday(const LPSYSTEMTIME pDateTime);

Параметры

refDateTime
Ссылка на объект COleDateTime , содержащий текущую дату.

pDateTime
Во второй версии указатель на объект CTime , содержащий текущие сведения о дате. В третьей версии указатель на структуру SYSTEMTIME , содержащую текущие сведения о дате.

Замечания

Эта функция-член реализует поведение сообщения Win32 MCM_SETTODAY, как описано в пакете SDK для Windows.

Пример

См. пример CMonthCalCtrl ::GetToday.

CMonthCalCtrl::SetYearView

Задает для текущего элемента управления календаря текущего месяца представление года.

BOOL SetYearView();

Возвращаемое значение

ЗНАЧЕНИЕ TRUE, если этот метод выполнен успешно; в противном случае — ЗНАЧЕНИЕ FALSE.

Замечания

Этот метод использует метод CMonthCalCtrl::SetCurrentView для задания представления MCMV_YEAR, представляющего ежегодное представление.

CMonthCalCtrl::SizeMinReq

Отображает элемент управления календаря месяца на минимальный размер, отображающий один месяц.

BOOL SizeMinReq(BOOL bRepaint = TRUE);

Параметры

bRepaint
Указывает, должен ли элемент управления быть переопределен. По умолчанию значение TRUE. Если значение FALSE не выполняется, повторение не происходит.

Возвращаемое значение

Ненулевое значение, если элемент управления календарем месяца имеет минимальный размер; в противном случае — 0.

Замечания

Вызов SizeMinReq успешно отображает весь элемент управления календарем месяца для календаря одного месяца.

CMonthCalCtrl::SizeRectToMin

Для элемента управления календарем текущего месяца вычисляет наименьший прямоугольник, который может содержать все календари, которые помещаются в указанный прямоугольник.

LPRECT SizeRectToMin(LPRECT lpRect);

Параметры

lpRect
[in] Указатель на структуру RECT , которая определяет прямоугольник, содержащий требуемое количество календарей.

Возвращаемое значение

Указатель на структуру RECT , которая определяет прямоугольник, размер которого меньше или равен прямоугольнику, определенному параметром lpRect .

Замечания

Этот метод вычисляет, сколько календарей может помещаться в прямоугольник, указанный параметром lpRect , а затем возвращает наименьший прямоугольник, который может содержать это число календарей. По сути, этот метод сжимает указанный прямоугольник, чтобы точно соответствовать требуемому количеству календарей.

Этот метод отправляет сообщение MCM_SIZERECTTOMIN , описанное в пакете SDK для Windows.

См. также

Пример CMNCTRL1 MFC
Класс CWnd
Диаграмма иерархии
Класс CDateTimeCtrl