CMonthCalCtrl日历控件的使用 下载本文

内容发布更新时间 : 2024/12/24 0:21:02星期一 下面是文章的全部内容请认真阅读。

本文详细阐述了基本日历控件的属性、方法以及简易使用代码。

Win32 API提供了一个显示日期的日历控件,日期的显示模式是基于控制面板中的区域性设置或者说是依赖于用户的操作系统。

CMonthCalCtrl对象封装了日历控件的功能。日历控件提供给用户一个简易的日历界面,用户可以用于选择日期。

一、 日历控件简介

Win32 API提供了一个显示日期的彩色日历控件,日期的显示模式是基于控制面板中的区域性设置或者说是依赖于用户的操作系统(具体方法:更换操作系统语言和区域设置)。具体的日历控件如下图一所示:

标题条包含两个按钮和两个标签,左边的按钮准许用户单击选择前一个月份,单击右边的按钮选择下一个月份。左边的标签显示当前选择的年份,右边的标签显示当前的月份。左键单击左边的“年份”标签,显示出微调按钮,通过单击按钮或者上下键来选择相应的年份,此“年份”标签不可自己录入。左键单击右边的“月份”标签,显示可选的月份信息,根据需要进行选择。

日历控件有较多属性,可以根据需要自行设定。属性列表如下图所示。其中No Trailing Dates、Short Days Of Week以及Keep Selection on Navigation属性只适用于Vista操作系统。

二、创建日历控件

通常可以在窗口、对话框、工具条及其他任何容器窗口中创建日历控件。下面以对话框为例,创建日历控件。

日历控件对应着CMonthCalCtrl类,所以要动态创建一个日历控件,需要声明一个CMonthCalCtrl变量或指向CMonthCalCtrl的指针,首先在对话框对应的头文件中添加代码,如下绿色注释下所示:

然后让变量绑定日历控件的ID,代码如下:

CMonthCalCtrl类同MFC中其他控件对应的类一样,提供了一个Create()方法用来在容器窗口中动态创建日历控件,代码如下:

m_CtrlDate=new CMonthCalCtrl;

m_CtrlDate->Create(WS_TABSTOP |WS_CHILD | WS_VISIBLE | WS_BORDER | MCS_SHORTDAYSOFWEEK| MCS_NOTRAILINGDATES | MCS_NOTODAY

| MCS_WEEKNUMBERS,CPoint(300, 80), this, 0x224);//以|分割的选项(控件样式)可选

三、日历控件属性操作

作为一个可视化对象,日历控件可以用不同的颜色来表现背景、星期日、标题条文本、标题条背景等,可以通过修改程序来更换这些颜色。改变日历控件的颜色,需要调用CMonthCalCtrl::SetColor() 方法,该方法的语法是:

COLORREF SetColor(intnRegion, COLORREF ref);

默认情况下,控件的标题条显示蓝色背景。如果要改变它,需要向nRegion参数传递MCSC_TITLEBK值,向ref参数传递你所要显示的颜色。如果更改标题条上文本的颜色,需要向nRegion参数传递MCSC_TITLETEXT值。

此外,在英语国家,一个星期的第一天是星期天,如果你想更改一个星期的第一天,可以调用函数SetFirstDayOfWeek(),它的语法是:

BOOL SetFirstDayOfWeek(intiDay, int* lpnOld = NULL);