埋め込み月間予定表コントロールへのアクセス
更新 : 2007 年 11 月
埋め込み月間予定表コントロール オブジェクトにアクセスするには、CDateTimeCtrl オブジェクトの GetMonthCalCtrl メンバ関数を呼び出します。
メモ : |
---|
埋め込み月間予定表コントロールは、日時指定コントロールに 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 は日時指定コントロール オブジェクトです。
//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 を呼び出してフォントを変更すると、新しいフォントが格納され、月間予定表コントロールを次回表示するときに使用されます。