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

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

第61行:

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

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

	inline bool IsVista()
{
#ifdef _versionhelpers_H_INCLUDED_
return ::IsWindowsVistaOrGreater();
#else // !_versionhelpers_H_INCLUDED_
OSVERSIONINFO ovi = { sizeof(OSVERSIONINFO) };
BOOL bRet = ::GetVersionEx(&ovi);
return ((bRet != FALSE) && (ovi.dwMajorVersion >= 6));
#endif // _versionhelpers_H_INCLUDED_
}

  

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

  

第1165行:

// GenericWndClass - generic window class usable for subclassing

// Use in dialog templates to specify a placeholder to be subclassed
// Specify as a custom control with class name WTL_GenericWindow
// Call Rregister() before creating dialog (for example, in WinMain)
namespace GenericWndClass
{
inline LPCTSTR GetName()
{
return _T("WTL_GenericWindow");
} inline ATOM Register()
{
WNDCLASSEX wc = { sizeof(WNDCLASSEX) };
wc.lpfnWndProc = ::DefWindowProc;
wc.hInstance = ModuleHelper::GetModuleInstance();
wc.hCursor = ::LoadCursor(NULL, IDC_ARROW);
wc.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1);
wc.lpszClassName = GetName();
ATOM atom = ::RegisterClassEx(&wc);
ATLASSERT(atom != 0);
return atom;
} inline BOOL Unregister() // only needed for DLLs or tmp use
{
return ::UnregisterClass(GetName(), ModuleHelper::GetModuleInstance());
}
}; // 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. MySQL的SQL语句——常见报错

    Eclipse连接MySQL数据库 — 8.0版jdbc驱动 键知识 https://blog.csdn.net/jenminzhang/article/details/9816853 [必应翻译] ...

  2. 《TP5.0学习笔记---模板变量输出、替换和赋值篇》

    原文地址:http://blog.csdn.net/self_realian/article/details/75214922 模板变量输出.替换和赋值 我们看一下文件编译的结果,我们知道我们现在写的 ...

  3. SQL ------------ avg() 与 sum 函数

    AVG() 函数返回数字列的平均值 注意是数字的平均数, 语法: select avg(字段) from 表名 建个表,弄点数据 使用 select avg(字段) as 平均数 from 表名 与w ...

  4. 一、hexo+github搭建个人博客的过程记录

    前提: 1.新建一个github仓库 2.安装配置Node.js 3.安装配置Git 前提 步骤1.新建一个github仓库 打开github网站,(注册)登录账号,新建一个仓库; 注:==仓库名称要 ...

  5. 【BZOJ4487】[JSOI2015]染色问题(容斥)

    [BZOJ4487][JSOI2015]染色问题(容斥) 题面 BZOJ 题解 看起来是一个比较显然的题目? 首先枚举一下至少有多少种颜色没有被用到过,然后考虑用至多\(k\)种颜色染色的方案数. 那 ...

  6. Java学习:File类中的过滤器接口

    javaIO类的File类应用:过滤器接口 FilenameFilter和FileFilter都是用来过滤文件的 例如: 过滤以.jpg或者.java结尾的文件. 通过看他们的源码: 通过使用File ...

  7. Python 3 的 int 类型详解(为什么 int 不存在溢出问题?)

    在以前的Python2中,整型分为int和long,也就是整型和长整型, 长整型不存在溢出问题, 即可以存放任意大小的数值,理论支持无限大数字. 因此在Python3 中,统一使用长整型,用int表示 ...

  8. Java基础之UDP协议和TCP协议简介及简单案例的实现

    写在前面的废话:马上要找工作了,做了一年的.net ,到要找工作了发现没几个大公司招聘.net工程师,真是坑爹呀.哎,java就java吧,咱从头开始学呗,啥也不说了,玩命撸吧,我真可怜啊. 摘要: ...

  9. Vue-员工管理系统

    大二暑假进行了两周Vue的入门学习,主要内容就是关于前端的入门学习,在两周内学习了Vue的一些简单使用 主要就是使用数据的双向绑定,使用Vue进行数据处理,使用Bootstrap进行布局搭建,下面是我 ...

  10. Asp.NetCoreWebApi - RESTful Api

    目录 参考文章 REST 常用http动词 WebApi 在 Asp.NetCore 中的实现 创建WebApi项目. 集成Entity Framework Core操作Mysql 安装相关的包(为X ...