CMonthCalCtrl::SetDayState 是 MFC 中 CMonthCalCtrl 类的一个公共方法,用于设置月历控件的日期状态。该方法的原型如下:
BOOL SetDayState(int nMonths, LPMONTHDAYINFO pDates);

其中:

  •  nMonths 表示数组 pDates 中包含的月份数。

  •  pDates 是一个指向 MONTHDAYINFO 结构的指针数组,用于指定每个月的日期状态。


MONTHDAYINFO 结构定义如下:
typedef struct tagMONTHDAYINFO {
   UINT   cbSize;
   UINT   cDayState;
   LPMONTHDAYSTATE prgDayState;
} MONTHDAYINFO, *LPMONTHDAYINFO;

其中:

  •  cbSize 表示结构的大小,应该设置为 sizeof(MONTHDAYINFO)。

  •  cDayState 表示日期状态数组的大小。

  •  prgDayState 是一个指向 MONTHDAYSTATE 结构的指针,用于指定日期状态。


MONTHDAYSTATE 结构定义如下:
typedef struct tagMONTHDAYSTATE {
   WORD   wDay;
   WORD   wState;
} MONTHDAYSTATE, *LPMONTHDAYSTATE;

其中:

  •  wDay 表示月份中的一天(1 到 31)。

  •  wState 表示该天的状态,可以是下列值之一:

  - 0: 正常
  - GD_SELECTED: 选中
  - GD_GRAYED: 灰显
  - GD_BOLD: 粗体

这个方法允许你动态设置月历控件中每个月的日期状态,以实现各种定制需求,比如标记特定日期、禁用某些日期等。


转载请注明出处:http://www.zyzy.cn/article/detail/20838/MFC/CMonthCalCtrl