设置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 通知消息

  1. 使用 " 属性 " 窗口中,将添加 MCN_GETDAYSTATE 消息通知处理程序。 m_monthcal 对象 (请参见 映射到功能的消息)。

  2. 在处理程序的主体,添加以下代码:

    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 每个月)。

请参见

参考

使用CMonthCalCtrl

概念

控件(MFC)