zoukankan      html  css  js  c++  java
  • WTL 9.0的变化

    忽然发现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作者居然写错字了,嘿嘿。

  • 相关阅读:
    弹弹弹,走到哪里弹到哪里 —— 关于上海电信强制弹窗广告
    对Live Writer支持的继续改进:设置随笔地址别名(EntryName)
    【公告】6月20日0:00~1:00(今天夜里)机房网络设备调整
    上周热点回顾(6.46.10)
    [功能改进]Live Writer发博支持“建分类、加标签、写摘要”
    上周热点回顾(6.186.24)
    上周热点回顾(6.116.17)
    [转].NET 绘制 EAN13 (商品条码)
    [转]C#连接操作mysql实例
    [转]MySQLHelper类
  • 原文地址:https://www.cnblogs.com/honker/p/3785751.html
Copyright © 2011-2022 走看看