2 congtou guo congtou_guo 于 2014.05.21 09:44 提问

MFC中日历控件(CDateTimeCtrl)用SetMonthCalColor函数改变颜色没有生效。

1.首先我想改变日历控件的背景颜色和字体颜色。通过搜索了解到SetMonthCalColor可以实现此功能。
2.我先拖了一个日历控件到对话框中,在头文件中声明了一个变量:
CDateTimeCtrl m_TimeStart;
3.然后再DoDataExchange()中添加:
DDX_Control(pDX, IDC_DATETIMEPICKERStart, m_TimeStart);
4.然后再OnInitDialog()中添加:
int n1 = 0;
n1 = m_TimeStart.SetMonthCalColor(MCSC_TITLEBK, RGB(255, 0, 0));
n1 = m_TimeStart.SetMonthCalColor(MCSC_MONTHBK, RGB(255, 0, 0));
n1 = m_TimeStart.SetMonthCalColor(MCSC_TEXT, RGB(255, 0, 0));
n1 = m_TimeStart.SetMonthCalColor(MCSC_TITLETEXT, RGB(255, 0, 0));
n1 = m_TimeStart.SetMonthCalColor(MCSC_BACKGROUND, RGB(255, 0, 0));
n1 = m_TimeStart.SetMonthCalColor(MCSC_TRAILINGTEXT, RGB(255, 0, 0));
此时运行程序发现日历控件的颜色没有任何变化。
5.然后给日历控件添加时间改变的消息
ON_NOTIFY(DTN_DATETIMECHANGE, IDC_DATETIMEPICKERStart, &CAlarmSearchDlg::OnDtnDatetimechangeDatetimepickerstart)
在响应函数中添加如下代码:
void CAlarmSearchDlg::OnDtnDatetimechangeDatetimepickerstart(NMHDR *pNMHDR, LRESULT *pResult)
{
LPNMDATETIMECHANGE pDTChange = reinterpret_cast(pNMHDR);
// TODO: Add your control notification handler code here
*pResult = 0;
int n2 = 0;
n2 = m_TimeEnd.SetMonthCalColor(MCSC_TITLEBK, RGB(255, 0, 0));
n2 = m_TimeEnd.SetMonthCalColor(MCSC_MONTHBK, RGB(255, 0, 0));
n2 = m_TimeEnd.SetMonthCalColor(MCSC_TEXT, RGB(255, 0, 0));
n2 = m_TimeEnd.SetMonthCalColor(MCSC_TITLETEXT, RGB(255, 0, 0));
n2 = m_TimeEnd.SetMonthCalColor(MCSC_BACKGROUND, RGB(255, 0, 0));
n2 = m_TimeEnd.SetMonthCalColor(MCSC_TRAILINGTEXT, RGB(255, 0, 0));
Invalidate();
}
运行程序,此时点击下拉按钮弹出的月历颜色依旧没有变化,只是点击左右切换月份的三角按钮时才有红色闪过。
请问各位高手我应该如何修改才能实现日历颜色的改变?

1个回答

u013165704
u013165704   2016.07.22 16:48

有 全部的 日历 控件的 代码 的开发的 吗

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!