VC++ ATL 项目中遇到 DateTime_SetSystemTime 未定义错误
在 VC++ ATL 项目中遇到 DateTime_SetSystemTime 未定义错误,通常是由于以下原因及解决方案: 1. 缺少头文件引用该宏定义在 <commctrl.h> 头文件中,需确保包含该头文件并链接 comctl32.lib 库
- #include <commctrl.h>
- #pragma comment(lib, "comctl32.lib")
复制代码 2. 未初始化通用控件使用前需调用 InitCommonControls() 初始化通用控件库 3. 替代方案(直接使用消息)若仍存在问题,可直接使用 Windows 消息替代宏 - SendMessage(hDT, DTM_SETSYSTEMTIME, GDT_VALID, (LPARAM)&st);
复制代码 4. 完整修正代码示例
- #include <windows.h>
- #include <commctrl.h>
- #pragma comment(lib, "comctl32.lib")
- BOOL SetDateTimeControlValue(HWND hDT, const SYSTEMTIME& st) {
- if (!hDT || !IsWindow(hDT)) return FALSE;
- return (BOOL)SendMessage(hDT, DTM_SETSYSTEMTIME, GDT_VALID, (LPARAM)&st);
- }
复制代码 此代码通过消息机制直接操作控件,避免宏定义依赖问题
|