第四章SysMets1.c程序老通不过,如下:
--------------------Configuration: SysMets1 - Win32 Debug--------------------
Compiling...
SysMets1.cpp
d:\program files\microsoft visual studio\myprojects\sysmets1\sysmets.h(151) : error C2065: 'SM_MOUSEWHEELPRESENT' : undeclared identifier
d:\program files\microsoft visual studio\myprojects\sysmets1\sysmets.h(153) : error C2065: 'SM_XVIRTUALSCREEN' : undeclared identifier
d:\program files\microsoft visual studio\myprojects\sysmets1\sysmets.h(155) : error C2065: 'SM_YVIRTUALSCREEN' : undeclared identifier
d:\program files\microsoft visual studio\myprojects\sysmets1\sysmets.h(157) : error C2065: 'SM_CXVIRTUALSCREEN' : undeclared identifier
d:\program files\microsoft visual studio\myprojects\sysmets1\sysmets.h(159) : error C2065: 'SM_CYVIRTUALSCREEN' : undeclared identifier
d:\program files\microsoft visual studio\myprojects\sysmets1\sysmets.h(161) : error C2065: 'SM_CMONITORS' : undeclared identifier
d:\program files\microsoft visual studio\myprojects\sysmets1\sysmets.h(163) : error C2065: 'SM_SAMEDISPLAYFORMAT' : undeclared identifier
d:\program files\microsoft visual studio\myprojects\sysmets1\sysmets1.cpp(95) : error C2065: 'sysmtrics' : undeclared identifier
d:\program files\microsoft visual studio\myprojects\sysmets1\sysmets1.cpp(95) : error C2109: subscript requires array or pointer type
d:\program files\microsoft visual studio\myprojects\sysmets1\sysmets1.cpp(95) : error C2228: left of '.szLabel' must have class/struct/union type
执行 cl.exe 时出错.SysMets1.exe - 1 error(s), 0 warning(s)我定位,是以下代码:
SM_MOUSEWHEELPRESENT, TEXT ("SM_MOUSEWHEELPRESENT"),
TEXT ("Mouse wheel present flag"),
SM_XVIRTUALSCREEN, TEXT ("SM_XVIRTUALSCREEN"),
TEXT ("Virtual screen x origin"),
SM_YVIRTUALSCREEN, TEXT ("SM_YVIRTUALSCREEN"),
TEXT ("Virtual screen y origin"),
SM_CXVIRTUALSCREEN, TEXT ("SM_CXVIRTUALSCREEN"),
TEXT ("Virtual screen width"),
SM_CYVIRTUALSCREEN, TEXT ("SM_CYVIRTUALSCREEN"),
TEXT ("Virtual screen height"),
SM_CMONITORS, TEXT ("SM_CMONITORS"),
TEXT ("Number of monitors"),
SM_SAMEDISPLAYFORMAT, TEXT ("SM_SAMEDISPLAYFORMAT"),
TEXT ("Same color format flag")
但是我把这几行代码注释起来或者删了,还是报同样的错误!!!求答案!!!
--------------------Configuration: SysMets1 - Win32 Debug--------------------
Compiling...
SysMets1.cpp
d:\program files\microsoft visual studio\myprojects\sysmets1\sysmets.h(151) : error C2065: 'SM_MOUSEWHEELPRESENT' : undeclared identifier
d:\program files\microsoft visual studio\myprojects\sysmets1\sysmets.h(153) : error C2065: 'SM_XVIRTUALSCREEN' : undeclared identifier
d:\program files\microsoft visual studio\myprojects\sysmets1\sysmets.h(155) : error C2065: 'SM_YVIRTUALSCREEN' : undeclared identifier
d:\program files\microsoft visual studio\myprojects\sysmets1\sysmets.h(157) : error C2065: 'SM_CXVIRTUALSCREEN' : undeclared identifier
d:\program files\microsoft visual studio\myprojects\sysmets1\sysmets.h(159) : error C2065: 'SM_CYVIRTUALSCREEN' : undeclared identifier
d:\program files\microsoft visual studio\myprojects\sysmets1\sysmets.h(161) : error C2065: 'SM_CMONITORS' : undeclared identifier
d:\program files\microsoft visual studio\myprojects\sysmets1\sysmets.h(163) : error C2065: 'SM_SAMEDISPLAYFORMAT' : undeclared identifier
d:\program files\microsoft visual studio\myprojects\sysmets1\sysmets1.cpp(95) : error C2065: 'sysmtrics' : undeclared identifier
d:\program files\microsoft visual studio\myprojects\sysmets1\sysmets1.cpp(95) : error C2109: subscript requires array or pointer type
d:\program files\microsoft visual studio\myprojects\sysmets1\sysmets1.cpp(95) : error C2228: left of '.szLabel' must have class/struct/union type
执行 cl.exe 时出错.SysMets1.exe - 1 error(s), 0 warning(s)我定位,是以下代码:
SM_MOUSEWHEELPRESENT, TEXT ("SM_MOUSEWHEELPRESENT"),
TEXT ("Mouse wheel present flag"),
SM_XVIRTUALSCREEN, TEXT ("SM_XVIRTUALSCREEN"),
TEXT ("Virtual screen x origin"),
SM_YVIRTUALSCREEN, TEXT ("SM_YVIRTUALSCREEN"),
TEXT ("Virtual screen y origin"),
SM_CXVIRTUALSCREEN, TEXT ("SM_CXVIRTUALSCREEN"),
TEXT ("Virtual screen width"),
SM_CYVIRTUALSCREEN, TEXT ("SM_CYVIRTUALSCREEN"),
TEXT ("Virtual screen height"),
SM_CMONITORS, TEXT ("SM_CMONITORS"),
TEXT ("Number of monitors"),
SM_SAMEDISPLAYFORMAT, TEXT ("SM_SAMEDISPLAYFORMAT"),
TEXT ("Same color format flag")
但是我把这几行代码注释起来或者删了,还是报同样的错误!!!求答案!!!
楼主可以看看MSDN关于函数GetSystemMetrics的说明,用vc6.0能编译通过吗
#define WINVER 0x0500
就行了,如果你的系统是XP的话,最好写成:#define WINVER 0x0501
没定义WINDOWS版本吧。
在源程序头加就行。
=================
这个其实很简单,你在VC6下面找到windows.h,打开它,看一下就明白了,它里面定义了WINVER 为0x0400,而在SM_MOUSEWHEELPRESENT这些标识符的定义中却是加在WINVER为0x0500下才有效的。