埋め込み月間予定表コントロールへのアクセス

埋め込み月間予定表コントロール オブジェクトには、CDateTimeCtrl オブジェクトから GetMonthCalCtrl メンバー関数を呼び出すことでアクセスできます。

Note

埋め込み月間予定表コントロールは、日付と時刻の選択コントロールに 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 つあります。 1 つ目の例外、つまり月間予定表コントロールの色については、既に説明したとおりです。 2 つ目の例外は、月間予定表コントロールで使用されるフォントです。 CDateTimeCtrl::SetMonthCalFont に既存のフォントのハンドルを渡して呼び出すことで、既定のフォントは変更できます。 次の例 (m_dtPicker は日付と時刻の選択コントロール オブジェクト) は、1 つの考えられる方法を示しています。


//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 の使い方
コントロール