忽然发现WTL更新到9.0.4140了,便对比了一下 8.1.12085。

先看看atlapp.h中有什么大的变动。

第61行:

  1. #if defined(_SYSINFOAPI_H_) && defined(NOT_BUILD_WINDOWS_DEPRECATE) && (_WIN32_WINNT >= 0x0501)
  2. #include <VersionHelpers.h>
  3. #endif

  XP以及上的系统可以用 VersionHelpers.h中一些更方便的工具函数来判断windows版本了,例如:IsWindowsXPOrGreater()、IsWindowsXPSP3OrGreater()、IsWindows8OrGreater(),同时VC2013编译时也会警告GetVersionEx等API已经过时,所以WTL 9引入了这些新API,并改写之前WTL版本,如:

  1. inline bool IsVista()
  2. {
  3. #ifdef _versionhelpers_H_INCLUDED_
  4. return ::IsWindowsVistaOrGreater();
  5. #else // !_versionhelpers_H_INCLUDED_
  6. OSVERSIONINFO ovi = { sizeof(OSVERSIONINFO) };
  7. BOOL bRet = ::GetVersionEx(&ovi);
  8. return ((bRet != FALSE) && (ovi.dwMajorVersion >= 6));
  9. #endif // _versionhelpers_H_INCLUDED_
  10. }

  

  1. inline bool IsWin7()
  2. {
  3. #ifdef _versionhelpers_H_INCLUDED_
  4. return ::IsWindows7OrGreater();
  5. #else // !_versionhelpers_H_INCLUDED_
  6. OSVERSIONINFO ovi = { sizeof(OSVERSIONINFO) };
  7. BOOL bRet = ::GetVersionEx(&ovi);
  8. return ((bRet != FALSE) && (ovi.dwMajorVersion == 6) && (ovi.dwMinorVersion >= 1));
  9. #endif // _versionhelpers_H_INCLUDED_
  10. }

  

第1165行:

  1. // GenericWndClass - generic window class usable for subclassing
  2.  
  3. // Use in dialog templates to specify a placeholder to be subclassed
  4. // Specify as a custom control with class name WTL_GenericWindow
  5. // Call Rregister() before creating dialog (for example, in WinMain)
  6. namespace GenericWndClass
  7. {
  8. inline LPCTSTR GetName()
  9. {
  10. return _T("WTL_GenericWindow");
  11. }
  12.  
  13. inline ATOM Register()
  14. {
  15. WNDCLASSEX wc = { sizeof(WNDCLASSEX) };
  16. wc.lpfnWndProc = ::DefWindowProc;
  17. wc.hInstance = ModuleHelper::GetModuleInstance();
  18. wc.hCursor = ::LoadCursor(NULL, IDC_ARROW);
  19. wc.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1);
  20. wc.lpszClassName = GetName();
  21. ATOM atom = ::RegisterClassEx(&wc);
  22. ATLASSERT(atom != 0);
  23. return atom;
  24. }
  25.  
  26. inline BOOL Unregister() // only needed for DLLs or tmp use
  27. {
  28. return ::UnregisterClass(GetName(), ModuleHelper::GetModuleInstance());
  29. }
  30. }; // namespace GenericWndClass

  这是三个新增的函数,看注释知道,是用于subclass之类的,还没看到具体该怎样用。注释里WTL作者居然写错字了,嘿嘿。

WTL 9.0的变化 - atlapp.h的更多相关文章

  1. WTL 9.0的变化 - atlctrls.h

    atlctrls.h中是对控件的封装. 第1249行增加: void GetMargins(UINT& nLeft, UINT& nRight) const { ATLASSERT(: ...

  2. WTL 9.0的变化 - atlcrack.h

    atlcrack.h中是一些对消息映射的简化,9.0版本中只增加了一个WM_MOUSEWHEEL的响应,而且要求windows vista. #if (_WIN32_WINNT >= 0x060 ...

  3. Swift2.3 --> Swift3.0 的变化

    Swift3.0语法变化 首先和大家分享一下学习新语法的技巧: 用Xcode8打开自己的Swift2.3的项目,选择Edit->Convert->To Current Swift Synt ...

  4. CMMI 2.0术语变化

    过程域 vs. 实践域 “过程域”(Process Areas,PAs)在CMMI 2.0中变成了“实践域(Practice Areas,PAs)”.这样的改变,强调了CMMI 2.0是最佳实践的集合 ...

  5. vue.js学习:1.0到2.0的变化(区别)

    一.生命周期 1.1.0的生命周期: 周期 解释 init 组件刚刚被创建,但Data.method等属性还没被计算出来 created 组件创建已经完成,但DOM还没被生成出来 beforeComp ...

  6. 如何在VC6.0下用pthread.h这个头文件

    如何在VC6.0下用pthread.h这个头文件   1.下载PTHREAD的WINDOWS开发包 pthreads-w32-2-4-0-release.exe(任何一个版本均可) http://so ...

  7. D:\Software\Keil5\ARM\PACK\Keil\STM32F1xx_DFP\2.1.0\Device\Include\stm32f10x.h(483): error: #5: cannot open source input file "core_cm3.h": No such file or directory

    1. 错误提示信息: D:\Software\Keil5\ARM\PACK\Keil\STM32F1xx_DFP\2.1.0\Device\Include\stm32f10x.h(483): erro ...

  8. Swift3.0语法变化

    写在前面 首先和大家分享一下学习新语法的技巧:用Xcode8打开自己的Swift2.3的项目,选择Edit->Convert->To Current Swift Syntax- 让Xcod ...

  9. Vue2.0 相对于Vue1.0的变化:生命周期

    1.生命周期 根据提供的生命周期钩子说明Vue.js实例各个阶段的情况,Vue.js 2.0对不少钩子进行了修改,以下说明:(灰色字体代表是 2.0已经废弃或者被更名的钩子,黑色字体代表1.0 和2. ...

随机推荐

  1. [LeetCode] 141. Linked List Cycle 单链表中的环

    Given a linked list, determine if it has a cycle in it. To represent a cycle in the given linked lis ...

  2. Metasploit 常用命令手册

    Installation curl https://raw.githubusercontent.com/rapid7/metasploit-omnibus/master/config/template ...

  3. chrome浏览器如何查看、修改、删除Cookie

      1.chrome浏览器的cookie保存位置 C:\Users\你的用户名\AppData\Local\Google\Chrome\User Data\Default 快捷键win+r--> ...

  4. ECMAScript 初探 - 基础篇

    ECMAScript 语言的标准是由 Netscape.Sun.微软.Borland 等公司基于 JavaScript 和 JScript 锤炼.定义出来的. ECMAScript 仅仅是一个描述,定 ...

  5. 使用velero进行kubernetes灾备

    使用velero可以对集群进行备份和恢复,降低集群DR造成的影响.velero的基本原理就是将集群的数据备份到对象存储中,在恢复的时候将数据从对象存储中拉取下来.可以从官方文档查看可接收的对象存储,本 ...

  6. hbase 待看代码

    flush split mvcc rpc get put mutation netty  reactor模型 page cache 缓存 I/O 又被称作标准 I/O,大多数文件系统的默认 I/O 操 ...

  7. C# 1.0 新特性之异步委托(AP、APM)

    Ø  前言 C# 异步委托也是属于异步编程中的一种,可以称为 Asynchronous Programming(异步编程)或者 Asynchronous Programming Model(异步编程模 ...

  8. Intellij Idea 自动更新资源和类

    Run -> Edit Configurations 进入配置页 On update action:当发现更新时的操作   选择Update classes and resources  On ...

  9. 携程 Apollo分布式部署

    一.环境准备 操作系统:CentOS release 7.5 (启动脚本理论上支持所有Linux发行版,建议CentOS 7) JDK :jdk1..0_162 (建议安装Java 1.8+) MyS ...

  10. Redis(六)管道(Pipelining)

    管道技术并不是Redis特有的,管道技术在计算机科学中有很多地方的应用. 来自wiki的解释: In computing, a pipeline, also known as a data pipel ...