埋め込み月間予定表コントロールへのアクセス
埋め込み月間予定表コントロール オブジェクトには、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
の呼び出しでフォントが変更された後、その新しいフォントが保存され、次回月間予定表が表示されるときに使用されます。