月間予定表コントロールの日付状態の設定
月間予定表コントロール属性の 1 つが月の日付のコントロールの日の状態と呼ばれる情報を格納する機能です。 この情報が現在表示されている月の特定の日付を選択するために使用されます。
注意
CMonthCalCtrl オブジェクトは日付の状態情報を表示する MCS_DAYSTATE のスタイルが必要です。
日の状態情報が 32 ビット データ型、MONTHDAYSTATEとして表現されます。 MONTHDAYSTATE ビット フィールド (1 ~ 31) の各ビットは、か月の日の状態を表します。 ほとんどの場合、対応する日は太字で表示されます。; それ以外の場合は、文字なしで表示されます。
月間予定表コントロールの日の状態を設定するための 2 種類のメソッドがあります。: 明示的に CMonthCalCtrl::SetDayState へまたは MCN_GETDAYSTATE 通知メッセージの処理による呼び出しです。
MCN_GETDAYSTATE 通知メッセージの処理
MCN_GETDAYSTATE メッセージがコントロールによって表示されている月の日付がどのように表示されるかを判断するために送信されます。
注意
コントロールが以前とキャッシュする新しい月が選択されるたびに従う月、表示月に関して、この通知を受け取ります。
適切にこのメッセージを処理する場合、初期化し適切な値を MONTHDAYSTATE 構造体の配列を初期化します、新しい情報で関連の構造体メンバーを一つの月日の状態情報が中要求されているかを確認する必要があります。 必要な手順を説明する次の手順は MONTHDAYSTATE オブジェクトの m_monthcal と配列という CMonthCalCtrl オブジェクトがある mdStateと見なされます。
MCN_GETDAYSTATE の通知メッセージを処理するには
プロパティ ウィンドウを使用して、m_monthcal オブジェクトに MCN_GETDAYSTATE 通知メッセージのハンドラーを追加します。関数へのメッセージの割り当てを参照してください。
ハンドラーの本体に、次のコードを追加する:
LPNMDAYSTATE pDayState = reinterpret_cast<LPNMDAYSTATE>(pNMHDR); int iMax = pDayState->cDayState; for(int i = 0; i < iMax; i++) { pDayState->prgDayState[i] = (MONTHDAYSTATE)0; // init to 0 pDayState->prgDayState[i] |= 0x01 << 14; // set 15th bit to 1 }
この例では、適切な型に pNMHDR のポインターを変換し、情報を一つの月が要求されているかを判断します。pDayState->cDayState)。 各月の場合、現在のpDayState->prgDayState[i]bitfield () はゼロに初期化され、次に必要な日付 (この場合は各月の第 15) に設定されます。