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 現在の月のカレンダー コントロールの "Today" 文字列の最大幅を取得します。
CMonthCalCtrl::GetMinReqRect 1 か月のカレンダー コントロールで完全な月を表示するために必要な最小サイズを取得します。
CMonthCalCtrl::GetMonthDelta 月カレンダー コントロールのスクロール率を取得します。
CMonthCalCtrl::GetMonthRange 月の予定表コントロールの表示の上限と下限を表す日付情報を取得します。
CMonthCalCtrl::GetRange 月の予定表コントロールに設定されている現在の最小および最大の日付を取得します。
CMonthCalCtrl::GetSelRange ユーザーが現在選択している日付範囲の上限と下限を表す日付情報を取得します。
CMonthCalCtrl::GetToday 月カレンダー コントロールで「today」として指定された日付の日付情報を取得します。
CMonthCalCtrl::HitTest 画面上の特定のポイントにある月のカレンダー コントロールのセクションを決定します。
CMonthCalCtrl::IsCenturyView 現在の月のカレンダー コントロールの現在のビューが世紀ビューかどうかを示します。
CMonthCalCtrl::IsDecadeView 現在の月のカレンダー コントロールの現在のビューが 10 年ビューかどうかを示します。
CMonthCalCtrl::IsMonthView 現在の月のカレンダー コントロールの現在のビューが月ビューかどうかを示します。
CMonthCalCtrl::IsYearView 現在の月のカレンダー コントロールの現在のビューが年ビューかどうかを示します。
CMonthCalCtrl::SetCalendarBorder 現在の月の予定表コントロールの罫線の幅を設定します。
CMonthCalCtrl::SetCalendarBorderDefault 現在の月の予定表コントロールの境界線の既定の幅を設定します。
CMonthCalCtrl::SetCalID 現在の月の予定表コントロールの予定表識別子を設定します。
CMonthCalCtrl::SetCenturyView 世紀ビューを表示する現在の月のカレンダー コントロールを設定します。
CMonthCalCtrl::SetColor 月のカレンダー コントロールの指定した領域の色を設定します。
CMonthCalCtrl::SetCurrentView 指定したビューを表示する現在の月のカレンダー コントロールを設定します。
CMonthCalCtrl::SetCurSel 月カレンダー コントロールで現在選択されている日付を設定します。
CMonthCalCtrl::SetDayState 月のカレンダー コントロールの日の表示を設定します。
CMonthCalCtrl::SetDecadeView 現在の月のカレンダー コントロールを 10 年ビューに設定します。
CMonthCalCtrl::SetFirstDayOfWeek カレンダーの左端の列に表示する曜日を設定します。
CMonthCalCtrl::SetMaxSelCount 月間予定表コントロールで選択できる日数の最大値を設定します。
CMonthCalCtrl::SetMonthDelta 月間予定表コントロールのスクロール率を設定します。
CMonthCalCtrl::SetMonthView 月ビューを表示する現在の月のカレンダー コントロールを設定します。
CMonthCalCtrl::SetRange 1 か月の予定表コントロールで許可される最小および最大の日付を設定します。
CMonthCalCtrl::SetSelRange 月カレンダー コントロールの選択を特定の日付範囲に設定します。
CMonthCalCtrl::SetToday 現在の日付のカレンダー コントロールを設定します。
CMonthCalCtrl::SetYearView 現在の月のカレンダー コントロールを年ビューに設定します。
CMonthCalCtrl::SizeMinReq 月のカレンダー コントロールを最小の 1 か月のサイズに再描画します。
CMonthCalCtrl::SizeRectToMin 現在の月のカレンダー コントロールでは、指定した四角形に収まるすべてのカレンダーを含むことができる最小の四角形を計算します。

解説

月カレンダー コントロールは、ユーザーが日付を選択できるシンプルな予定表インターフェイスをユーザーに提供します。 ユーザーは、次の方法で表示を変更できます。

  • 月単位で前後にスクロールします。

  • 現在の日付を表示するには、[今日] テキストをクリックします (MCS_NOTODAY スタイルが使用されていない場合)。

  • ポップアップ メニューから月または 1 年を選択します。

月のカレンダー コントロールをカスタマイズするには、オブジェクトを作成するときにさまざまなスタイルを適用します。 これらのスタイルについては、Windows SDK の カレンダー コントロール のスタイル で説明されています。

月カレンダー コントロールは、複数の月を表示でき、日付を太字にすることで特別な日 (休日など) を示すことができます。

月カレンダー コントロールの使用方法の詳細については、「 CMonthCalCtrl の使用を参照してください。

継承階層

CObject

CCmdTarget

CWnd

CMonthCalCtrl

要件

Header: 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 スタイルの組み合わせを指定します。 スタイルの詳細については、Windows SDK の「 Month Calendar Control Styles 」を参照してください。

rect
RECT 構造体への参照。 月のカレンダー コントロールの位置とサイズを格納します。

pt
月のカレンダー コントロールの場所を識別する POINT 構造体への参照。

pParentWnd
月カレンダー コントロールの親ウィンドウである CWnd オブジェクトへのポインター。 NULL は指定できません。

nID
月カレンダー コントロールのコントロール ID を指定します。

戻り値

初期化が成功した場合は 0 以外。それ以外の場合は 0。

解説

2 つの手順で月の予定表コントロールを作成します。

  1. CMonthCalCtrl を呼び出して、CMonthCalCtrl オブジェクトを構築します。

  2. このメンバー関数を呼び出します。この関数は、月カレンダー コントロールを作成し、 CMonthCalCtrl オブジェクトにアタッチします。

Createを呼び出すと、共通コントロールが初期化されます。 呼び出す Create のバージョンによって、サイズが決まります。

  • MFC でコントロールのサイズを 1 か月に自動的に設定するには、 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;

戻り値

コントロールの境界線の幅 (ピクセル単位)。

解説

このメソッドは、Windows SDK で説明されている MCM_GETCALENDARBORDER メッセージを送信します。

CMonthCalCtrl::GetCalendarCount

現在の月の予定表コントロールに表示される予定表の数を取得します。

int GetCalendarCount() const;

戻り値

月の予定表コントロールに現在表示されている予定表の数。 予定表の最大許容数は 12 です。

解説

このメソッドは、Windows SDK で説明されている MCM_GETCALENDARCOUNT メッセージを送信します。

CMonthCalCtrl::GetCalendarGridInfo

現在の月の予定表コントロールに関する情報を取得します。

BOOL GetCalendarGridInfo(PMCGRIDINFO pmcGridInfo) const;

パラメーター

pmcGridInfo
[out]現在の月のカレンダー コントロールに関する情報を受け取る MCGRIDINFO 構造体へのポインター。 呼び出し元は、この構造体の割り当てと初期化を担当します。

戻り値

このメソッドが成功した場合は TRUE。それ以外の場合は FALSE。

解説

このメソッドは、Windows SDK で説明されている MCM_GETCALENDARGRIDINFO メッセージを送信します。

最初のコード例では、月のカレンダー コントロールにプログラムでアクセスするために使用される変数 ( 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;

戻り値

calendar 識別子定数の 1 つ。

解説

カレンダー識別子は、グレゴリオ暦 (ローカライズ)、日本語、イスラム暦などの地域固有のカレンダーを表します。 アプリケーションでは、さまざまな言語サポート機能を持つ予定表識別子を使用できます。

このメソッドは、Windows SDK で説明されている MCM_GETCALID メッセージを送信します。

CMonthCalCtrl::GetColor

nRegion で指定された月のカレンダー コントロールの領域の色を取得します。

COLORREF GetColor(int nRegion) const;

パラメーター

nRegion
色の取得元となる月のカレンダー コントロールの領域。 値の一覧については、SetColornRegion パラメーターを参照してください。

戻り値

COLORREF成功した場合は、月のカレンダー コントロールの部分に関連付けられている色を指定する値です。 それ以外の場合、このメンバー関数は -1 を返します。

CMonthCalCtrl::GetCurrentView

現在の月のカレンダー コントロールによって現在表示されているビューを取得します。

DWORD GetCurrentView() const;

戻り値

現在のビュー。次のいずれかの値で示されます。

Value 意味
MCMV_MONTH 月単位ビュー
MCMV_YEAR 年間ビュー
MCMV_DECADE 10 年ビュー
MCMV_CENTURY 世紀ビュー

解説

このメソッドは、Windows SDK で説明されている MCM_GETCURRENTVIEW メッセージを送信します。

最初のコード例では、月のカレンダー コントロールにプログラムでアクセスするために使用される変数 ( 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 にすることはできません。

戻り値

成功した場合は 0 以外。otherwize 0.

解説

このメンバー関数は、Windows SDK で説明されているように、Win32 メッセージ MCM_GETCURSELの動作を実装します。

Note

スタイル MCS_MULTISELECTが設定されている場合、このメンバー関数は失敗します。

MFC の GetCurSelの実装では、 COleDateTime 使用法、 CTime 使用法、または SYSTEMTIME 構造の使用法を指定できます。

CMonthCalCtrl::GetFirstDayOfWeek

カレンダーの左端の列に表示される週の最初の曜日を取得します。

int GetFirstDayOfWeek(BOOL* pbLocal = NULL) const;

パラメーター

pbLocal
BOOL 値へのポインター。 値が 0 以外の場合、コントロールの設定はコントロール パネルの設定と一致しません。

戻り値

週の最初の曜日を表す整数値。 これらの整数が表す内容の詳細については、「 Remarks を参照してください。

解説

このメンバー関数は、Windows SDK で説明されているように、Win32 メッセージ MCM_GETFIRSTDAYOFWEEKの動作を実装します。 曜日は、次のように整数で表されます。

Value 曜日
0 月曜日
1 Tuesday
2 水曜日
3 Thursday
4 金曜日
5 土曜日
6 日曜日

CMonthCalCtrl::SetFirstDayOfWeek の例を参照してください。

CMonthCalCtrl::GetMaxSelCount

月の予定表コントロールで選択できる現在の最大日数を取得します。

int GetMaxSelCount() const;

戻り値

コントロールに対して選択できる合計日数を表す整数値。

解説

このメンバー関数は、Windows SDK で説明されているように、Win32 メッセージ MCM_GETMAXSELCOUNTの動作を実装します。 このメンバー関数は、MCS_MULTISELECT スタイル セットを持つコントロールに使用します。

CMonthCalCtrl::SetMaxSelCount の例を参照してください。

CMonthCalCtrl::GetMaxTodayWidth

現在の月のカレンダー コントロールの "Today" 文字列の最大幅を取得します。

DWORD GetMaxTodayWidth() const;

戻り値

"Today" 文字列の幅 (ピクセル単位)。

最初のコード例では、月のカレンダー コントロールにプログラムでアクセスするために使用される変数 ( 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);

解説

ユーザーは、月のカレンダー コントロールの下部に表示される "Today" 文字列をクリックすることで、現在の日付に戻ることができます。 "Today" 文字列には、ラベル テキストと日付テキストが含まれます。

このメソッドは、Windows SDK で説明されている MCM_GETMAXTODAYWIDTH メッセージを送信します。

CMonthCalCtrl::GetMinReqRect

1 か月のカレンダー コントロールで完全な月を表示するために必要な最小サイズを取得します。

BOOL GetMinReqRect(RECT* pRect) const;

パラメーター

pRect
外接する四角形の情報を受け取る RECT 構造体へのポインター。 このパラメーターは有効なアドレスである必要があり、NULL にすることはできません。

戻り値

成功した場合、このメンバー関数は 0 以外の値を返し、 lpRect は該当する境界情報を受け取ります。 失敗した場合、メンバー関数は 0 を返します。

解説

このメンバー関数は、Windows SDK で説明されているように、Win32 メッセージ MCM_GETMINREQRECTの動作を実装します。

CMonthCalCtrl::GetMonthDelta

月カレンダー コントロールのスクロール率を取得します。

int GetMonthDelta() const;

戻り値

月の予定表コントロールのスクロール速度。 スクロール 速度は、ユーザーがスクロール ボタンを 1 回クリックしたときにコントロールが表示を移動する月数です。

解説

このメンバー関数は、Windows SDK で説明されているように、Win32 メッセージ MCM_GETMONTHDELTAの動作を実装します。

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
取得する範囲の制限のスコープを指定する値。 この値は、次のいずれかである必要があります。

Value 意味
GMR_DAYSTATE 部分的にのみ表示される表示範囲の前後の月を含めます。
GMR_VISIBLE 完全に表示される月のみを含めます。

戻り値

1 番目と 2 番目のバージョンでは refMinRangerefMaxRange 、または 3 番目のバージョンでは pMinRangepMaxRange で示される 2 つの制限でスパンされる、月単位の範囲を表す整数。

解説

このメンバー関数は、Windows SDK で説明されているように、Win32 メッセージ MCM_GETMONTHRANGEの動作を実装します。 MFC の GetMonthRangeの実装では、 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 オブジェクト、CTime オブジェクト、または SYSTEMTIME 構造体へのポインター。

戻り値

ゼロ (制限は設定されていません) または制限情報を指定する次の値の組み合わせにできる DWORD。

Value 意味
GDTR_MAX コントロールの上限が設定されています。 pMaxRange は有効であり、該当する日付情報が含まれています。
GDTR_MIN コントロールの最小制限が設定されています。 pMinRange は有効であり、該当する日付情報が含まれています。

解説

このメンバー関数は、Windows SDK で説明されているように、Win32 メッセージ MCM_GETRANGEの動作を実装します。 MFC の GetRangeの実装では、 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 以外を返します。それ以外の場合は 0 を返します。

解説

このメンバー関数は、Windows SDK で説明されているように、Win32 メッセージ MCM_GETSELRANGEの動作を実装します。 GetSelRange は、MCS_MULTISELECT スタイルを使用しない月の予定表コントロールに適用すると失敗します。

MFC の GetSelRangeの実装では、 COleDateTime 使用法、 CTime 使用法、または SYSTEMTIME 構造の使用法を指定できます。

CMonthCalCtrl::GetToday

月カレンダー コントロールで「today」として指定された日付の日付情報を取得します。

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

BOOL GetToday(LPSYSTEMTIME pDateTime) const;

パラメーター

refDateTime
現在の日付を示す COleDateTime または CTime オブジェクトへの参照。

pDateTime
日付情報を受け取る SYSTEMTIME 構造体へのポインター。 このパラメーターは有効なアドレスである必要があり、NULL にすることはできません。

戻り値

正常終了した場合は 0 以外を返します。それ以外の場合は 0 を返します。

解説

このメンバー関数は、Windows SDK で説明されているように、Win32 メッセージ MCM_GETTODAYの動作を実装します。 MFC の GetTodayの実装では、 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。

解説

このメソッドは、Windows SDK で説明されている MCM_GETCURRENTVIEW メッセージを送信します。 そのメッセージがMCMV_CENTURYを返す場合、このメソッドは TRUE を返します。

CMonthCalCtrl::IsDecadeView

現在の月のカレンダー コントロールの現在のビューが 10 年ビューかどうかを示します。

BOOL IsDecadeView() const;

戻り値

現在のビューが 10 年ビューの場合は TRUE。それ以外の場合は FALSE。

解説

このメソッドは、Windows SDK で説明されている MCM_GETCURRENTVIEW メッセージを送信します。 そのメッセージがMCMV_DECADEを返す場合、このメソッドは TRUE を返します。

CMonthCalCtrl::IsMonthView

現在の月のカレンダー コントロールの現在のビューが月ビューかどうかを示します。

BOOL IsMonthView() const;

戻り値

現在のビューが月ビューの場合は TRUE。それ以外の場合は FALSE。

解説

このメソッドは、Windows SDK で説明されている MCM_GETCURRENTVIEW メッセージを送信します。 そのメッセージがMCMV_MONTHを返す場合、このメソッドは TRUE を返します。

CMonthCalCtrl::IsYearView

現在の月のカレンダー コントロールの現在のビューが年ビューかどうかを示します。

BOOL IsYearView() const;

戻り値

現在のビューが年ビューの場合は TRUE。それ以外の場合は FALSE。

解説

このメソッドは、Windows SDK で説明されている MCM_GETCURRENTVIEW メッセージを送信します。 そのメッセージがMCMV_YEARを返す場合、このメソッドは TRUE を返します。

CMonthCalCtrl::SetCalendarBorder

現在の月の予定表コントロールの罫線の幅を設定します。

void SetCalendarBorder(int cxyBorder);

パラメーター

cxyBorder
[in]境界線の幅 (ピクセル単位)。

解説

このメソッドが成功した場合、境界線の幅は cxyBorder パラメーターに設定されます。 それ以外の場合、境界線の幅は、現在の meで指定されている既定値にリセットされます。テーマが使用されていない場合は 0 にリセットされます。

このメソッドは、Windows SDK で説明されている MCM_SETCALENDARBORDER メッセージを送信します。

最初のコード例では、月のカレンダー コントロールにプログラムでアクセスするために使用される変数 ( m_monthCalCtrl) を定義します。 この変数は次の例で使用されています。

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

次のコード例では、月カレンダー コントロールの罫線の幅を 8 ピクセルに設定します。 このメソッドが成功したかどうかを判断するには、 CMonthCalCtrl::GetCalendarBorder メソッドを使用します。

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

CMonthCalCtrl::SetCalendarBorderDefault

現在の月の予定表コントロールの境界線の既定の幅を設定します。

void SetCalendarBorderDefault();

解説

罫線の幅は、現在の meで指定された既定値に設定され、テーマが使用されていない場合は 0 に設定されます。

このメソッドは、Windows SDK で説明されている MCM_SETCALENDARBORDER メッセージを送信します。

CMonthCalCtrl::SetCalID

現在の月の予定表コントロールの予定表識別子を設定します。

BOOL SetCalID(CALID calid);

パラメーター

calid
[in] calendar 識別子 定数の 1 つ。

戻り値

このメソッドが成功した場合は TRUE。それ以外の場合は FALSE。

解説

カレンダー識別子は、グレゴリオ暦 (ローカライズ)、日本語、イスラム暦などの地域固有のカレンダーを指定します。 予定表を含むロケールがコンピューターにインストールされている場合は、 SetCalID メソッドを使用して、 calid パラメーターで指定された予定表を表示します。

このメソッドは、Windows SDK で説明されている MCM_SETCALID メッセージを送信します。

最初のコード例では、月のカレンダー コントロールにプログラムでアクセスするために使用される変数 ( 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
設定する月カレンダーの色を指定する整数値。 この値には、次のいずれかを指定できます。

Value 意味
MCSC_BACKGROUND 月の間に表示される背景色。
MCSC_MONTHBK 月内に表示される背景色。
MCSC_TEXT 1 か月以内にテキストを表示するために使用される色。
MCSC_TITLEBK 予定表のタイトルに表示される背景色。
MCSC_TITLETEXT 予定表のタイトル内のテキストを表示するために使用される色。
MCSC_TRAILINGTEXT ヘッダーと末尾の日のテキストを表示するために使用される色。 ヘッダーと末尾の日数は、現在のカレンダーに表示される前月と翌月の日数です。

ref
月カレンダー コントロールの指定した部分の新しい色設定の COLORREF 値。

戻り値

成功した場合、月のカレンダー コントロールの指定した部分の前の色設定を表す COLORREF 値。 それ以外の場合、このメッセージは -1 を返します。

解説

このメンバー関数は、Windows SDK で説明されているように、Win32 メッセージ MCM_SETCOLORの動作を実装します。

// 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]月単位、年単位、10 年単位、または世紀ビューを指定する次のいずれかの値。

  • MCMV_MONTH: 月次ビュー
  • MCMV_YEAR: 年間ビュー
  • MCMV_DECADE: 10 年ビュー
  • MCMV_CENTURY: 世紀ビュー

戻り値

このメソッドが成功した場合は TRUE。それ以外の場合は FALSE。

解説

このメソッドは、Windows SDK で説明されている MCM_SETCURRENTVIEW メッセージを送信します。

CMonthCalCtrl::SetCurSel

月カレンダー コントロールで現在選択されている日付を設定します。

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

パラメーター

refDateTime
現在選択されている月の予定表コントロールを示す COleDateTime または CTime オブジェクトへの参照。

pDateTime
現在の選択範囲として設定する日付を含む SYSTEMTIME 構造体へのポインター。

戻り値

正常終了した場合は 0 以外を返します。それ以外の場合は 0 を返します。

解説

このメンバー関数は、Windows SDK で説明されているように、Win32 メッセージ MCM_SETCURSELの動作を実装します。 MFC の SetCurSelの実装では、 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) は 1 か月の日の状態を表します。 ビットがオンの場合は、対応する日が太字で表示されます。オフの場合は、表示される際に何も強調されません。

戻り値

正常終了した場合は 0 以外を返します。それ以外の場合は 0 を返します。

解説

このメンバー関数は、Windows SDK で説明されているように、Win32 メッセージ MCM_SETDAYSTATEの動作を実装します。

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

現在の月のカレンダー コントロールを 10 年ビューに設定します。

BOOL SetDecadeView();

戻り値

このメソッドが成功した場合は TRUE。それ以外の場合は FALSE。

解説

このメソッドでは、 CMonthCalCtrl::SetCurrentView メソッドを使用してビューを MCMV_DECADE に設定します。これは 10 年ビューを表します。

CMonthCalCtrl::SetFirstDayOfWeek

カレンダーの左端の列に表示する曜日を設定します。

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

パラメーター

iDay
週の最初の曜日として設定する曜日を表す整数値。 この値は、1 日の数値のいずれかである必要があります。 日付番号の説明については、 GetFirstDayOfWeek を参照してください。

lpnOld
前に設定した週の最初の曜日を示す整数へのポインター。

戻り値

前の週の最初の曜日がLOCALE_IFIRSTDAYOFWEEK以外の値に設定されている場合は 0 以外。コントロール パネルの設定で示されている日です。 それ以外の場合、この関数は 0 を返します。

解説

このメンバー関数は、Windows SDK で説明されているように、Win32 メッセージ MCM_SETFIRSTDAYOFWEEKの動作を実装します。

// 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 以外を返します。それ以外の場合は 0 を返します。

解説

このメンバー関数は、Windows SDK で説明されているように、Win32 メッセージ MCM_SETMAXSELCOUNTの動作を実装します。

// 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 の場合、月の差分は既定値 (コントロールに表示される月数) にリセットされます。

戻り値

前のスクロール速度。 スクロール レートが以前に設定されていない場合、戻り値は 0 になります。

解説

このメンバー関数は、Windows SDK で説明されているように、Win32 メッセージ MCM_SETMONTHDELTAの動作を実装します。

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;

次のコード例では、月、年、10 年、および世紀のビューを表示する月カレンダー コントロールを設定します。

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 オブジェクト、CTime オブジェクト、または範囲の上端にある日付を含むSYSTEMTIME構造体へのポインター。

戻り値

正常終了した場合は 0 以外を返します。それ以外の場合は 0 を返します。

解説

このメンバー関数は、Windows SDK で説明されているように、Win32 メッセージ MCM_SETRANGEの動作を実装します。 MFC の SetRangeの実装では、 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 オブジェクト、CTime オブジェクト、または範囲の上端にある日付を含むSYSTEMTIME構造体へのポインター。

戻り値

正常終了した場合は 0 以外を返します。それ以外の場合は 0 を返します。

解説

このメンバー関数は、Windows SDK で説明されているように、Win32 メッセージ MCM_SETSELRANGEの動作を実装します。 MFC の SetSelRangeの実装では、 COleDateTime 使用法、 CTime 使用法、または SYSTEMTIME 構造の使用法を指定できます。

CMonthCalCtrl::SetToday

現在の日付のカレンダー コントロールを設定します。

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

パラメーター

refDateTime
現在の日付を含む COleDateTime オブジェクトへの参照。

pDateTime
2 番目のバージョンでは、現在の日付情報を含む CTime オブジェクトへのポインター。 3 番目のバージョンでは、現在の日付情報を含む SYSTEMTIME 構造体へのポインター。

解説

このメンバー関数は、Windows SDK で説明されているように、Win32 メッセージ MCM_SETTODAYの動作を実装します。

CMonthCalCtrl::GetToday の例を参照してください。

CMonthCalCtrl::SetYearView

現在の月のカレンダー コントロールを年ビューに設定します。

BOOL SetYearView();

戻り値

このメソッドが成功した場合は TRUE。それ以外の場合は FALSE。

解説

このメソッドは、 CMonthCalCtrl::SetCurrentView メソッドを使用して、年間ビューを表すMCMV_YEARにビューを設定します。

CMonthCalCtrl::SizeMinReq

月の予定表コントロールを、1 か月を表示する最小サイズに表示します。

BOOL SizeMinReq(BOOL bRepaint = TRUE);

パラメーター

bRepaint
コントロールを再描画するかどうかを指定します。 既定では、TRUE です。 FALSE の場合、再描画は行われません。

戻り値

月のカレンダー コントロールのサイズが最小値に設定されている場合は 0 以外。それ以外の場合は 0。

解説

SizeMinReqを呼び出すと、1 か月の予定表の月全体の予定表コントロールが正常に表示されます。

CMonthCalCtrl::SizeRectToMin

現在の月のカレンダー コントロールでは、指定した四角形に収まるすべてのカレンダーを含むことができる最小の四角形を計算します。

LPRECT SizeRectToMin(LPRECT lpRect);

パラメーター

lpRect
[in]予定表の数を含む四角形を定義する RECT 構造体へのポインター。

戻り値

lpRect パラメーターで定義された四角形以下のサイズの四角形を定義するRECT構造体へのポインター。

解説

このメソッドは、 lpRect パラメーターで指定された四角形に収めることができるカレンダーの数を計算し、その数の予定表を含むことができる最小の四角形を返します。 実際には、このメソッドは、指定した四角形を目的のカレンダー数に正確に合わせて縮小します。

このメソッドは、Windows SDK で説明されている MCM_SIZERECTTOMIN メッセージを送信します。

関連項目

MFC サンプル CMNCTRL1
CWnd クラス
階層図
CDateTimeCtrl クラス