SYSMETS.H中有段内容是报错的:
error C2065: 'SM_MOUSEWHEELPRESENT' : undeclared identifier
error C2065: 'SM_XVIRTUALSCREEN' : undeclared identifier
error C2065: 'SM_YVIRTUALSCREEN' : undeclared identifier
error C2065: 'SM_CXVIRTUALSCREEN' : undeclared identifier
error C2065: 'SM_CYVIRTUALSCREEN' : undeclared identifier
error C2065: 'SM_CMONITORS' : undeclared identifier
error C2065: 'SM_SAMEDISPLAYFORMAT' : undeclared identifier
在网上查了一下,原来是头文件预设中没有包括这几项声明。因为VC6.0中WINUSER.H中,那几个找不到的常量在#if(WINVER >= 0x0500)之下。
WINVER = 0x0500 就是说windows 的版本为5.0(即win2000),这种指定和你是在什么操作系统中编译的没有关系,因为vc6出来时win2000尚处于beta版,有一些2000新增的函数或者常量,不定义WINVER,vc6默认下是不认得的。
在sysmets.cpp中的include<windows.h>后加入#define WINVER 0x0500,结果发现WINVER redefinition,因为redefinition是发生在windows.h中,且windows.h中有#ifndef WINVER #define WINVER 0x0400。
把#define移到include以前,就可以了。