设置Month calendar控件的日状态
其中一个 month calendar 控件的属性是能够存储信息,被称为控件的日状态,月份每天的。 此信息的当前显示的月份用于基础特定日期。
备注
CMonthCalCtrl 对象必须具有显示 MCS_DAYSTATE 的样式日状态信息。
日状态信息来表示, 32 位数据类型, MONTHDAYSTATE。 在 MONTHDAYSTATE 位域 (1 到 31) 的每个在一个月份表示一天的状态。 如果位打开,对应的日以粗体显示;否则它将显示没有焦点。
设置了 month calendar 控件的日状态两个方法:显式与调用 CMonthCalCtrl::SetDayState 或通过处理 MCN_GETDAYSTATE 通知消息。
处理 MCN_GETDAYSTATE 通知消息
控件发送 MCN_GETDAYSTATE 信息确定应如何显示日在可见月份中。
备注
由于控件缓存前面和后面的月份,有关该可见月份,您将收到此注意,在一个新的月份中选择时间。
为正确处理此消息,则必须确定多少个月日状态信息请求,初始化数组与适当的值 MONTHDAYSTATE 结构,并初始化具有新信息的相关结构成员。 下面的过程中,详细的必要步骤,假定,可以调用 m_monthcal 和数组的一 CMonthCalCtrl 对象 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)。 对于每个月份时,当前 bitfield (pDayState->prgDayState[i]) 初始化为需要的日期然后设置 (在此示例中,第 15 每个月)。