共用方式為


設定月曆控制項的日期狀態

月曆控制項的其中一個屬性是針對該月份的每一天儲存資訊的能力,稱為控制項的日期狀態。 這項資訊可用來強調目前顯示的月份中某些特別的日期。

注意

CMonthCalCtrl物件必須具有MCS_DAYSTATE樣式,才能顯示日期狀態資訊。

日期狀態資訊會以 32 位資料類型 MONTHDAYSTATE 表示。 MONTHDAYSTATE 位欄位中的每一 位 (1 到 31) 都代表一個月中的一天狀態。 如果位元是開啟的,則對應的日期會以粗體顯示;否則就不會強調其顯示。

設定月曆控制項的日期狀態有兩種方法:明確呼叫 CMonthCalCtrl::SetDayState 或處理MCN_GETDAYSTATE通知訊息。

處理 MCN_GETDAYSTATE 通知訊息

控制項會傳送MCN_GETDAYSTATE訊息,以判斷應如何顯示可見月份內的天數。

注意

因為控制項會快取之前和之後的月份 (相對於可見的月份),所以您會在選擇新的月份時接收到這個通知。

若要正確處理此訊息,您必須判斷要求多少月日狀態資訊、使用適當值初始化 MONTHDAYSTATE 結構的陣列 ,以及使用新資訊初始化相關的結構成員。 下列程式詳述必要步驟,假設您有名為 CMonthCalCtrl m_monthcal 的物件,以及 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]) 會初始化為零,同時會設定需要的日期 (在這個情況中為每個月的第 15 天)。

另請參閱

使用 CMonthCalCtrl
Controls