Windows程式设计 第七章的程序出错问题(鼠标滑轮)

在VC6.0中编译sysmets.c会出现错误

错误提示:
SYSMETS1.CPP
d:/workspace/text/sysmets.h(297) : error C2065: 'SM_MOUSEWHEELPRESENT' : undeclared identifier
d:/workspace/text/sysmets.h(301) : error C2065: 'SM_XVIRTUALSCREEN' : undeclared identifier
d:/workspace/text/sysmets.h(305) : error C2065: 'SM_YVIRTUALSCREEN' : undeclared identifier
d:/workspace/text/sysmets.h(309) : error C2065: 'SM_CXVIRTUALSCREEN' : undeclared identifier
d:/workspace/text/sysmets.h(313) : error C2065: 'SM_CYVIRTUALSCREEN' : undeclared identifier
d:/workspace/text/sysmets.h(317) : error C2065: 'SM_CMONITORS' : undeclared identifier
d:/workspace/text/sysmets.h(321) : error C2065: 'SM_SAMEDISPLAYFORMAT' : undeclared identifier

解决方法:

因为各个window版本所能使用的常量不一样,所以在xp环境下,必须在sysmets1.cpp文件最开始处加入一句:
#define WINVER 0x0501

以下是windows其他版本号:
   windows    server    2003  
   winver>=0x0502  
     
   windows    xp    
   winver>=0x0501  
     
   windows    2000  
   winver>=0x0500  
     
   windows    nt    4.0  
   winver>=0x0400  
     
   windows    me  
   winver>=0x0500  
     
   windows    98  
   winver>=0x0410  
     
   windows    95  
   winver>=0x0400

当按照上面的方法做完后还会有以下的错误:

错误提示:

d:/workspace/sysmets/sysmets.cpp(149) : error C2065: 'SPI_GETWHEELSCROLLLINES' : undeclared identifier
d:/workspace/sysmets/sysmets.cpp(160) : error C2065: 'WHEEL_DELTA' : undeclared identifier
d:/workspace/sysmets/sysmets.cpp(490) : error C2065: 'WM_MOUSEWHEEL' : undeclared identifier
d:/workspace/sysmets/sysmets.cpp(490) : error C2051: case expression not constant

改正:

先去msdn看SystemParametersInfo(SPI_GETWHEELSCROLLLINES,,,)这个函数,SPI_GETWHEELSCROLLLINES这个参数后的注释是这样写的:Windows NT 4.0 and later, Windows 98: Gets the number of lines to scroll when the mouse wheel is rotated. The pvParam parameter must point to a UINT variable that receives the number of lines. The default value is 3.

所以这个鼠标滚轮参数它支持的是Windows NT 4.0 之后的版本,是故我们必须在开头再加上这么一句:

#define _WIN32_WINNT 0x0400      

/* >=0x400后的版本都可以,版本信息之前发布过一篇有详细说明*/

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值