設定月曆控制項日期狀態
月曆控制項的屬性之一是月份的控制項的能夠儲存資訊,稱為日期狀態,每一天。 這項資訊用來強調目前顯示的月份的特定日期。
注意事項 |
---|
CMonthCalCtrl物件必須要有 MCS_DAYSTATE 樣式若要顯示的日期狀態資訊。 |
32 位元資料型別,以表示的日期狀態資訊 MONTHDAYSTATE。 每一個位元在 MONTHDAYSTATE 位元欄位 (1 到 31) 代表一個月中的一天的狀態。 如果位元有設定,將會顯示對應的日期中的粗體。 否則它將不強調顯示。
有兩種方法來設定月曆控制項日期狀態: 明確地用來呼叫 CMonthCalCtrl::SetDayState 或處理 MCN_GETDAYSTATE 通知訊息。
處理 MCN_GETDAYSTATE 通知訊息
MCN_GETDAYSTATE 控制項來判斷應如何顯示內的可見月份的天數、 傳送訊息。
注意事項 |
---|
因為控制項快取之前與之後月份,相對於可見月份中,您會在每次選擇新月份時收到此通知。 |
若要適當地處理此訊息,您必須決定多少月份的日期狀態資訊指之要求的會初始化陣列的 MONTHDAYSTATE 具有適當的值,並初始化相關的結構成員的新資訊結構。 下列程序,其中列出所需的步驟,假設您有CMonthCalCtrl物件呼叫m_monthcal和陣列的 MONTHDAYSTATE 物件, mdState。
若要處理 MCN_GETDAYSTATE 的通知訊息
使用 [屬性] 視窗中,將告知處理常式的 MCN_GETDAYSTATE 訊息至m_monthcal物件 (請參閱訊息對應到函式)。
在處理常式的主體內,加入下列程式碼:
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 日)。