次の方法で共有


月間予定表コントロールの日付状態の設定

月間予定表コントロールの属性の 1 つとして、月の各日付に対する情報を格納する機能があります。この情報は、コントロールの日付状態と呼ばれます。 この情報は、現在表示されている一部の日付を強調するのに使用されます。

注意

CMonthCalCtrl オブジェクトは、日付状態の情報を表示するために MCS_DAYSTATE スタイルが指定されている必要があります。

日付状態の情報は、32 ビット データ型 MONTHDAYSTATE で表されます。 MONTHDAYSTATE ビット フィールド (1 から 31) の各ビットは、その月の日付状態を表します。 ビットがオンになっている場合、対応する日付が太字で表示されます。ビットがオフになっている場合は、太字で表示されません。

月間予定表コントロールの日付状態の設定の 2 つの方法があります。呼び出しで明示的にCMonthCalCtrl::SetDayState または処理で、 MCN_GETDAYSTATE通知メッセージ。

MCN_GETDAYSTATE 通知メッセージの処理

MCN_GETDAYSTATE メッセージは、表示中の月の日付の表示方法を特定するためにコントロールによって送信されます。

注意

表示中の月の前月と翌月がコントロールでキャッシュされるので、新しい月が選択されるたびにこの通知を受信することになります。

このメッセージを適切に処理するには、日付状態の情報が要求されている月数を特定して、MONTHDAYSTATE 構造体の配列を適切な値で初期化し、該当する構造体メンバーを新しい情報で初期化する必要があります。 詳細な手順を次に示します。ここでは、m_monthcal と呼ばれる CMonthCalCtrl オブジェクトと MONTHDAYSTATE オブジェクトの配列 mdState があるものとします。

MCN_GETDAYSTATE 通知メッセージを処理するには

  1. プロパティ ウィンドウで、MCN_GETDAYSTATE メッセージの通知ハンドラーを m_monthcal オブジェクトに追加します。「関数へのメッセージの割り当て」を参照してください。

  2. ハンドラーの本体に、次のコードを追加します。

    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]) が 0 に初期化され、必要な日付が設定されます (ここでは、各月の 15 日)。

参照

参照

CMonthCalCtrl の使い方

概念

コントロール (MFC)