1 、如何添加日历控件 ( 1 )在需要添加日历控件的界面,点击鼠标右键,选择 “ActiveX…” ,如图 3-1 所示。然后进入选择外部插件的界面,如图 3-2 所示。 图 3-1 添加外部控件 图 3-2 选择日历控件 ( 2 )在图 3-2 中找到 Microsoft Date and Time Picker Control 6.0(SP6) ,然后界面上就会出现你需要的控件。 有时候会发现自己的电脑中没有该插件,此时需要安装该驱动。在网上下载 MSCOMCT2.OCX 驱动,然后解压复制到 C:\windows\system32\ 文件下。然后以管理员身份启动 cmd.exe ,对驱动进行安装。输入命令: regsvr32 c:\Windows\system32\MSCOMCT2.OCX ,回车就会提示安装完成。如果出现安装失败,最大的可能是没有以管理员身份启动 cmd.exe 。 ( 3 )在面板上,选择该日历控件,右键选择生成驱动,如图 3-3 所示。并对生产的驱动进行路径及其他设置。如图 3-4 所示。 图 3-3 生产日历控件驱动 ( 4 )图 3-4 所示,勾选“ Add .fp File To Project ”,并点击“ Browse.. ”按钮选择键 .fp 文件存放的位置。点击“ Next ”进入其他更多选项设置,此处直接选择“ Next ”,然后系统会自动生成驱动文件,并加载到工程文件中。如图 3-5 所示,在 Instrument Files 中会出现生成的驱动文件 mscomct2.fp 。 图 3-4 驱动参数设置 图 3-5 文件列表 2 、日历控件的操作 ( 1 )第一步,获取日历控件的句柄。采用函数 GetObjHandleFromActiveXCtrl 获取所创建 ActiveX 对象句柄,其函数形式如下: int GetObjHandleFromActiveXCtrl (int panelHandle, int controlID, CAObjHandle *objectHandle); int panelHandle —— 控件所放置的界面句柄; int controlID —— 控件的 ID 编号 CAObjHandle *objectHandle —— 返回控件的句柄 实际代码如下: CAObjHandle objhandle1 ; // 初始化控件句柄变量 GetObjHandleFromActiveXCtrl(panel,TABPANEL_DTPICKER,&objhandle1);// 获取外部控件的句柄 ( 2 )第二步,设置控件的显示格式,采用 MSComCtl2_IDTPickerSetFormat 函数进行操作,函数形式如下: HRESULT CVIFUNC MSComCtl2_IDTPickerSetFormat(CAObjHandle objectHandle,ERRORINFO *errorinfo, enum MSComCtl2Enum_FormatConstants penumFormat); penumFormat: 为枚举类型。有四种预定义格式。 dtpLong 为长日期格式,如“ 2006 年 5 月 14 日” ;dtpShort 为短日期格式,如“ 2003-5-15 ”; dtpTime 为时间格式,如“ 11:20:00 ”; dtpCustom 为用户自定义格式。 ( 3 )第三步,读取信息。 VARIANT pvday; VARIANT pvmonth; VARIANT pvyear; // 获取当前日期 MSComCtl2_IDTPickerGetDay(objhandle1,NULL,&pvday); // 获取当前月份 MSComCtl2_IDTPickerGetMonth(objhandle1,NULL,&pvmonth); // 获取当前年份 MSComCtl2_IDTPickerGetYear(objhandle1,NULL,&pvyear); 注意,该处的年月日的参数格式是 VARIANT 格式,需要用格式转换函数得到我们需要的参数格式。如下可以将 VARIANT 格式转化为 short 型。 CA_VariantGetShort(&pvyear,&syear); CA_VariantGetShort(&pvmonth,&smonth); CA_VariantGetShort(&pvday,&sday);