当前位置:编程学习 > C#/ASP.NET >>

求助!有关COleDateTime的问题

这是在《Windows编程技术》上抄的代码,但是编译通不过
COleDateTime m_time=COleDateTimme::GetCurrentTime();
CString s1=time.Format("%A,%B,%d,%Y");
CString s2=time.Format("%U");
CString str3="当前时间是:"+s1+"\n"+"本周是今年的第"+s2+"周";
::MessageBox(NULL,str3,"显示当前日期",MB_OK);

前边是不是应该加上#include <afx.h>呢?还有COleDateTime类在哪个头文件中定义?
我建的是Win32项目,先建一个空工程,在编之前在项目属性中将“MFC的使用”改为“在共享Dll中使用MFC”

请各位大虾给予帮助,多谢! --------------------编程问答-------------------- > WINVER not defined. Defaulting to 0x0502 (Windows Server 2003)
1>d:\projects\0301\0301\0301.cpp(12) : error C2065: “MB_OK)”: 未声明的标识符
1>d:\projects\0301\0301\0301.cpp(12) : error C2143: 语法错误 : 缺少“)”(在“;”的前面)
1>d:\projects\0301\0301\0301.cpp(12) : error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
1>d:\projects\0301\0301\0301.cpp(12) : error C2365: “MessageBoxA”: 重定义;以前的定义是“函数”
1>        c:\program files\microsoft visual studio 8\vc\platformsdk\include\winuser.h(7182) : 参见“MessageBoxA”的声明
1>d:\projects\0301\0301\0301.cpp(12) : error C2078: 初始值设定项太多
1>生成日志保存在“file://d:\Projects\0301\0301\Debug\BuildLog.htm”
1>0301 - 5 个错误,0 个警告
========== 生成: 0 已成功, 1 已失败, 0 最新, 0 已跳过 ==========
 这是错误提示信息,另外系统是vista --------------------编程问答-------------------- 上面是我对程序做了修改后的错误提示信息,如不做修改,则如下
1>------ 已启动生成: 项目: 0301, 配置: Debug Win32 ------
1>正在编译...
1>0301.cpp
1> WINVER not defined. Defaulting to 0x0502 (Windows Server 2003)
1>d:\projects\0301\0301\0301.cpp(4) : error C2146: 语法错误 : 缺少“;”(在标识符“m_time”的前面)
1>d:\projects\0301\0301\0301.cpp(4) : error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
1>d:\projects\0301\0301\0301.cpp(4) : error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
1>d:\projects\0301\0301\0301.cpp(4) : error C2825: 'COleDateTime': 当后面跟“::”时必须为类或命名空间
1>d:\projects\0301\0301\0301.cpp(4) : error C2143: 语法错误 : 缺少“;”(在“GetTickCount”的前面)
1>d:\projects\0301\0301\0301.cpp(4) : error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
1>d:\projects\0301\0301\0301.cpp(4) : error C2556: “int GetTickCount(void)”: 重载函数与“DWORD GetTickCount(void)”只是在返回类型上不同
1>        c:\program files\microsoft visual studio 8\vc\platformsdk\include\winbase.h(4234) : 参见“GetTickCount”的声明
1>d:\projects\0301\0301\0301.cpp(4) : error C2373: “GetTickCount”: 重定义;不同的类型修饰符
1>        c:\program files\microsoft visual studio 8\vc\platformsdk\include\winbase.h(4234) : 参见“GetTickCount”的声明
1>d:\projects\0301\0301\0301.cpp(5) : error C2228: “.Format”的左边必须有类/结构/联合
1>d:\projects\0301\0301\0301.cpp(6) : error C2228: “.Format”的左边必须有类/结构/联合
1>d:\projects\0301\0301\0301.cpp(12) : error C2065: “MB_OK)”: 未声明的标识符
1>d:\projects\0301\0301\0301.cpp(12) : error C2143: 语法错误 : 缺少“)”(在“;”的前面)
1>d:\projects\0301\0301\0301.cpp(12) : error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
1>d:\projects\0301\0301\0301.cpp(12) : error C2365: “MessageBoxA”: 重定义;以前的定义是“函数”
1>        c:\program files\microsoft visual studio 8\vc\platformsdk\include\winuser.h(7182) : 参见“MessageBoxA”的声明
1>d:\projects\0301\0301\0301.cpp(12) : error C2078: 初始值设定项太多
1>生成日志保存在“file://d:\Projects\0301\0301\Debug\BuildLog.htm”
1>0301 - 15 个错误,0 个警告
========== 生成: 0 已成功, 1 已失败, 0 最新, 0 已跳过 ==========
--------------------编程问答-------------------- lz要干嘛? --------------------编程问答-------------------- 搞个MSDN,查查每个出错的函数的原型,VC下有严格的类型检查机制,按照MSDN上的把参数类型和返回类型修一修,不行就用强制装换(强制转换注意切片问题)。注意每个函数的头文件。有的错误可能就是抄错了。

“1>d:\projects\0301\0301\0301.cpp(5) : error C2228: “.Format”的左边必须有类/结构/联合 ”
“1>d:\projects\0301\0301\0301.cpp(6) : error C2228: “.Format”的左边必须有类/结构/联合 ”
这两行的错误就不是编译器的版本类型问题了,而是一个逻辑问题。
这是在一个类的静态函数里引用了非静态的变量导致的。解决办法是把调用.Format函数的这个对象(我估计是个String)声明为一个全局的或者静态的。
如果这个变量的数目不确定,可以用STL的VECTOR,因为这个可伸缩,不固定。反正现在的机器配置都高,不差这点资源了。嘿嘿。
--------------------编程问答-------------------- 建一个MFC项目就行了
--------------------编程问答-------------------- #include<afxwin.h>
#include"afx.h"
#include"ATLComTime.h"
class cwin:public CWinApp
{
public:
virtual BOOL InitInstance();
};
COleDateTime mtime= COleDateTime::GetCurrentTime();
CString s1=mtime.Format("%A,%B,%d,%Y");
CString s2=mtime.Format("%U");
CString str3="当前时间是:"+s1+"\n"+"本周是今年的第"+s2+"周";
BOOL cwin::InitInstance()
{
::MessageBox(NULL,str3,"显示当前日期",MB_OK);
return TRUE;
}
cwin  c0201app;
这样就对了
补充:.NET技术 ,  VC.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,