共用方式為


設定月曆控制項日期狀態

月曆控制項的屬性之一是月份的控制項的能夠儲存資訊,稱為日期狀態,每一天。 這項資訊用來強調目前顯示的月份的特定日期。

注意事項注意事項

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

概念

控制項 (MFC)