埋め込まれた月のカレンダー コントロール オブジェクトは、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;
}
前に説明したように、埋め込みコントロールが閉じると、月のカレンダー コントロールのプロパティに対するすべての変更は失われます。ただし、2 つの例外があります。 最初の例外である月のカレンダー コントロールの色は既に説明されています。 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
を呼び出すと、新しいフォントが保存され、次回月のカレンダーが表示されるときに使用されます。