⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 有关应用程序的平台版本区别的一点心得.txt

📁 C&C++论坛精华
💻 TXT
字号:
作者:rick1126
email: rickzhang@sina.com
日期:2001-3-14 16:57:00
想必各位也看到了我在论坛上面发出的关于CRgn::GetRegionData的帖子, 最近从公司的一位高手那里很偶然的知道了原因. 就是在函数的头文件里面存在着对于不同OS的版本判定所进行的不同函数处理, 我的那个函数在强制设置为win200模式以后就正常了. 具体的介绍如下(翻译自MSDN的WINVER关键字:


使用VC5.0/6.0自动产生的 .mak 文件是缺省针对 WinNT3.5的. 这样要使用NT4+以后的函数则受到了条件型代码的博阿户, 必须定义正确的应用程序宏进行设置. 否则, 你可能得到下列错误:
   error C2065: undeclared identifier. 
你也需要确保 INCLUDE 环境变量包含所需函数的SDK头文件路径位于VC的头文件路径之前. 否则你会在发布应用程序时得到 C2065 错误. 

下面是你需要针对不同系统所定义的宏:
Windows 95 and Windows NT 4.0  WINVER=0x0400  

Windows 98 and Windows NT 4.0  _WIN32_WINDOWS=0x0410 and WINVER=0x0400 

Windows NT 4.0                 _WIN32_WINNT=0x0400 and WINVER=0x0400 

Windows 98 and Windows 2000    WINVER=0x0500 

Windows 2000                   _WIN32_WINNT=0x0500 and WINVER=0x0500 

Internet Explorer 3.0          _WIN32_IE=0x0300 

Internet Explorer 4.0          _WIN32_IE=0x0400 

Internet Explorer 5.0          _WIN32_IE=0x0500 


注意: 设置 WINVER 为 0x0500 可以缺省 _WIN32_IE=0x0400.

如果你需要自己编写 .mak 文件, WIN32.MAK 内的宏有助于你进行正确地转换. _WIN32_WINNT 在 WIN32.MAK 基于你选择的操作系统而被设置. 缺省情况下, WIN32.MAK 定义 _WIN32_WINNT 等于 0x0400, _WIN32_IE 等于 0x0300. 如果需要使用 IE4+ 的新特性, 比如新增的通用控件等, 就需要重新设置 _WIN32_IE 等于 0x0400. 

如果你在你的 mak 文件里面没有包含 WIN32.MAK , 就需要额外定义 _WIN32_WINNT 等于 0x0500 得到 win2000的机制.

SDK 头文件使用判断语句决定系统对应的支持函数. 下面的表格描述了这些语句.

#if _WIN32_WINNT >= 0x0400    WinNT4+ , 在win95中不被实现

#if _WIN32_WINDOWS >= 0x0410  Win98. 图象在Win95不保证显示正常

#if _WIN32_WINNT >= 0x0500    Win2000. 图象在 Win9x 或者 NT 上不保证显示正常
 
#if WINVER >= 0x0500          Win2000/Win98. 图象在Win95/NT上不保证显示正常

#if _WIN32_IE >= 0x0300       IE3+
#if _WIN32_IE >= 0x0400       IE4+
#if _WIN32_IE >= 0x0500       IE5+

对于 Win95se2 而言某些函数需要 (_WIN32_WINNT >= 0x0400) 进行判断, 诸如 Crypto API. 如果你针对 Win95se2进行应用编程, 而你需要使用这些函数的话就需要设置 _WIN32_WINNT 为 0x0400. 注意, 使用这些函数的应用程序在其他版本的 win95 上面可能运行不正常. 通常意义上, 应用程序缺省在win95上面运行就比如在编译时包含 _WIN32_WINNT 定义.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -