共用方式為


如何設定日期狀態

本主題示範如何設定日期狀態資訊。 月曆控件會使用日期狀態信息來判斷它如何繪製控件內的特定天數。

使用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;

月曆控件參考

關於月曆控件

使用月曆控件