全部文章 | 论坛文集 | 工作 | 学习

作者: 尤纳斯   发表日期: 2008-07-07 10:09   复制链接




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以前,就可以了。



返回尤纳斯的主页



 
    

输出文字(笔记)——《Windows程序设计》 - 尤纳斯

作者: 尤纳斯   发表日期: 2008-07-07 10:09   复制链接




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以前,就可以了。