C&C++论坛精华

源代码在线查看: 有关应用程序的平台版本区别的一点心得.txt

软件大小: 393 K
上传用户: nanbeilisa
关键词: 论坛
下载地址: 免注册下载 普通下载 VIP

相关代码

				作者: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 定义.
				
							

相关资源