C ++ Windows API覆盖?

时间:2009-04-02 04:19:45

标签: winapi

在VS9中,当我调用GetTickCount()函数时,它会在编译时自动将其转换为GetTickCount64()函数。第二个功能仅适用于Vista +,因此在XP上运行时我的程序错误。

我如何'覆盖'这个以便它调用原始的GetTickCount()?

由于

3 个答案:

答案 0 :(得分:3)

WINVER设置为您要定位的窗口版本。或者可能是_WIN32_WINNT_WIN32_WINDOWS。也许甚至所有人......

请查看http://blogs.msdn.com/oldnewthing/archive/2007/04/11/2079137.aspx以获取有关该小型乱码版宏的详细信息。

但是,我在Windows SDK中根本没有看到重新定义 - 我们的设置中是否还有其他内容正在进行重新定义(或者我可能会错过它)?

答案 1 :(得分:0)

请记住,您没有编译Vista或Windows XP的应用程序,而是编译32位或64位操作系统。如果您的应用程序需要支持除64位Vista之外的其他Windows版本,请在构建选项中指定为32位。

答案 2 :(得分:0)

我在targetver.h中设置了以下内容:

#define WINVER 0x0501 
#define _WIN32_WINNT 0x0501
#define _WIN32_WINDOWS 0x0501 

它仍然会被重新定义。但是,当我创建一个打印出GetTickCount()的简单新项目时,它在XP上工作正常,即使我不必定义上述内容。 我没有更改项目设置中的任何内容。有效的示例GetTickCount()和没有的示例GetTickCount()之间的唯一区别是它周围有很多其他代码并使用它,但是这些代码都不应该改变任何东西。

导致这种情况的原因是什么?

编辑:我使用的其他文件之一是直接调用GetTickCount64(),我不知道这个,所以我认为这是我自己的GetTickCount()函数。请忽略我上面写的内容