如何設定日期狀態
本主題示範如何設定日期狀態資訊。 月曆控件會使用日期狀態信息來判斷它如何繪製控件內的特定天數。
使用MCS_DAYSTATE樣式支援日期狀態的月曆控件。 日期狀態資訊會以 32 位數據類型 MONTHDAYSTATE 表示。 MONTHDAYSTATE 位字段 (0 到 30) 中的每個位都會指定一個月中的一天狀態。 如果某個位開啟,則對應的日期會以粗體顯示。
您需要知道的事項
技術
必要條件
- C/C++
- Windows 使用者介面程序設計
指示
應用程式可以藉由傳送MCM_SETDAYSTATE訊息或使用對應的宏來明確設定日期狀態資訊,MonthCal_SetDayState。 不過,日狀態資訊通常會設定為回應 MCN_GETDAYSTATE 通知碼,每當需要重新整理控件時就會傳送,例如,不同的月份已捲動到檢視中。
下列範例程式代碼示範如何在WM_NOTIFY訊息處理程式中處理MCN_GETDAYSTATE通知程序代碼。 它會藉由指定應該醒目提示每個可見月份的第一天和第十五天,以處理MCN_GETDAYSTATE。 NMDAYSTATE 結構的 cDayState 成員會指定數位中所需的 MONTHDAYSTATE 值數目,這會指定任意大小上限。 然後程式代碼會迴圈,以使用應用程式定義的 BOLDDAY 宏,在陣列的每個有效元素中設定適當的位。
#define BOLDDAY(ds, iDay) \
if (iDay > 0 && iDay < 32)(ds) |= (0x00000001 << (iDay - 1))
case WM_NOTIFY:
if (((LPNMHDR)lParam)->code == MCN_GETDAYSTATE)
{
MONTHDAYSTATE rgMonths[12] = { 0 };
int cMonths = ((NMDAYSTATE*)lParam)->cDayState;
for (int i = 0; i < cMonths; i++)
{
BOLDDAY(rgMonths[i], 1);
BOLDDAY(rgMonths[i], 15);
}
((NMDAYSTATE*)lParam)->prgDayState = rgMonths;
return TRUE;
}
break;
相關主題