问题描述
- 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();
}
运行程序,此时点击下拉按钮弹出的月历颜色依旧没有变化,只是点击左右切换月份的三角按钮时才有红色闪过。
请问各位高手我应该如何修改才能实现日历颜色的改变?
时间: 2024-10-12 04:48:29