atlctrls.h中是对控件的封装。

第1249行增加:

	void GetMargins(UINT& nLeft, UINT& nRight) const
{
ATLASSERT(::IsWindow(m_hWnd));
DWORD dwRet = (DWORD)::SendMessage(m_hWnd, EM_GETMARGINS, 0, 0L);
nLeft = LOWORD(dwRet);
nRight = HIWORD(dwRet);
}

  没什么好说的,原来的函数是以返回值的方式获取:

	DWORD GetMargins() const
{
ATLASSERT(::IsWindow(m_hWnd));
return (DWORD)::SendMessage(m_hWnd, EM_GETMARGINS, 0, 0L);
}

  

第1858行,CImageList变成了模板类,增加了自动销毁模板开头:

// forward declarations
template <bool t_bManaged> class CImageListT;
typedef CImageListT<false> CImageList;
typedef CImageListT<true> CImageListManaged; template <bool t_bManaged>
class CImageListT
{
public:
// Data members
HIMAGELIST m_hImageList; // Constructor/destructor/operators
CImageListT(HIMAGELIST hImageList = NULL) : m_hImageList(hImageList)
{ } ~CImageListT()
{
if(t_bManaged && (m_hImageList != NULL))
Destroy();
}

  

第3706行,CListViewCtrlT.FindItem 增加了一个重载:

	int FindItem(LPCTSTR lpstrFind, bool bPartial = true, bool bWrap = false, int nStart = -1) const
{
ATLASSERT(::IsWindow(m_hWnd));
LVFINDINFO lvfi = { 0 };
lvfi.flags = LVFI_STRING | (bWrap ? LVFI_WRAP : 0) | (bPartial ? LVFI_PARTIAL : 0);
lvfi.psz = lpstrFind;
return (int)::SendMessage(m_hWnd, LVM_FINDITEM, nStart, (LPARAM)&lvfi);
}

  查找ListView item时不用费劲地填结构体了。

第5819行,CToolBarCtrlT增加GetItemDropDownRect:

	void GetItemDropDownRect(int nIndex, LPRECT lpRect) const
{
#ifndef TB_GETITEMDROPDOWNRECT
const int TB_GETITEMDROPDOWNRECT = WM_USER + 103;
#endif
ATLASSERT(::IsWindow(m_hWnd));
BOOL bRet = (BOOL)::SendMessage(m_hWnd, TB_GETITEMDROPDOWNRECT, nIndex, (LPARAM)lpRect);
bRet; // avoid level 4 warning
ATLASSERT(bRet != FALSE);
}

  用来获取工具栏上下拉框的窗口矩形大小。(_WIN32_WINNT >= 0x0600)

第5934行,CToolBarCtrlT增加:

	BOOL InsertSeparator(int nIndex, int cxWidth = 8)
{
return InsertButton(nIndex, 0, BTNS_SEP, 0, cxWidth, (INT_PTR)0, 0);
} BOOL AddSeparator(int cxWidth = 8)
{
return AddButton(0, BTNS_SEP, 0, cxWidth, (INT_PTR)0, 0);
}

  用来添加工具栏上的分隔线。

第6397行,GetToolTips、SetToolTips中的tips由小写变成了大写Tips……。

第6656行,CTrackBarCtrlT.SetSelStart 和接下来的SetSelEnd、SetSelection增加了bRedraw参数:

	void SetSelStart(int nMin, BOOL bRedraw = FALSE)
{
ATLASSERT(::IsWindow(m_hWnd));
::SendMessage(m_hWnd, TBM_SETSELSTART, bRedraw, (LPARAM)nMin);
}

  

第7291行,增加了RichEdit 5的宏定义:

#if !defined(_UNICODE) && (_RICHEDIT_VER >= 0x0500)
#undef MSFTEDIT_CLASS
#define MSFTEDIT_CLASS "RICHEDIT50W"
#endif

  这影响到CRichEditCtrlT调用的是哪个版本的RichEdit控件。

	static LPCTSTR GetLibraryName()
{
#if (_RICHEDIT_VER >= 0x0500)
return _T("MSFTEDIT.DLL");
#elif (_RICHEDIT_VER >= 0x0200)
return _T("RICHED20.DLL");
#else
return _T("RICHED32.DLL");
#endif
}

  

第7825行,增加CRichEditCtrlT.GetWordBreakProc 和CRichEditCtrlT.SetWordBreakProc :

	EDITWORDBREAKPROC GetWordBreakProc() const
{
ATLASSERT(::IsWindow(m_hWnd));
return (EDITWORDBREAKPROC)::SendMessage(m_hWnd, EM_GETWORDBREAKPROC, 0, 0L);
} void SetWordBreakProc(EDITWORDBREAKPROC ewbprc)
{
ATLASSERT(::IsWindow(m_hWnd));
::SendMessage(m_hWnd, EM_SETWORDBREAKPROC, 0, (LPARAM)ewbprc);
}

  

第8160行,为RichEdit 8增加的代码:

#if (_RICHEDIT_VER >= 0x0800)
AutoCorrectProc GetAutoCorrectProc() const
{
ATLASSERT(::IsWindow(m_hWnd));
return (AutoCorrectProc)::SendMessage(m_hWnd, EM_GETAUTOCORRECTPROC, 0, 0L);
} BOOL SetAutoCorrectProc(AutoCorrectProc pfn)
{
ATLASSERT(::IsWindow(m_hWnd));
return (BOOL)::SendMessage(m_hWnd, EM_SETAUTOCORRECTPROC, (WPARAM)pfn, 0L);
} BOOL CallAutoCorrectProc(WCHAR ch)
{
ATLASSERT(::IsWindow(m_hWnd));
return (BOOL)::SendMessage(m_hWnd, EM_CALLAUTOCORRECTPROC, (WPARAM)ch, 0L);
} DWORD GetEditStyleEx() const
{
ATLASSERT(::IsWindow(m_hWnd));
return (DWORD)::SendMessage(m_hWnd, EM_GETEDITSTYLEEX, 0, 0L);
} DWORD SetEditStyleEx(DWORD dwStyleEx, DWORD dwMask)
{
ATLASSERT(::IsWindow(m_hWnd));
return (DWORD)::SendMessage(m_hWnd, EM_SETEDITSTYLEEX, dwStyleEx, dwMask);
} DWORD GetStoryType(int nStoryIndex) const
{
ATLASSERT(::IsWindow(m_hWnd));
return (DWORD)::SendMessage(m_hWnd, EM_GETSTORYTYPE, nStoryIndex, 0L);
} DWORD SetStoryType(int nStoryIndex, DWORD dwStoryType)
{
ATLASSERT(::IsWindow(m_hWnd));
return (DWORD)::SendMessage(m_hWnd, EM_SETSTORYTYPE, nStoryIndex, dwStoryType);
} DWORD GetEllipsisMode() const
{
ATLASSERT(::IsWindow(m_hWnd)); DWORD dwMode = 0;
BOOL bRet = (BOOL)::SendMessage(m_hWnd, EM_GETELLIPSISMODE, 0, (LPARAM)&dwMode);
bRet; // avoid level 4 warning
ATLASSERT(bRet != FALSE); return dwMode;
} BOOL SetEllipsisMode(DWORD dwEllipsisMode)
{
ATLASSERT(::IsWindow(m_hWnd));
return (BOOL)::SendMessage(m_hWnd, EM_SETELLIPSISMODE, 0, dwEllipsisMode);
} BOOL GetEllipsisState() const
{
ATLASSERT(::IsWindow(m_hWnd));
return (BOOL)::SendMessage(m_hWnd, EM_GETELLIPSISSTATE, 0, 0L);
} BOOL GetTouchOptions(int nTouchOptions) const
{
ATLASSERT(::IsWindow(m_hWnd));
return (BOOL)::SendMessage(m_hWnd, EM_GETTOUCHOPTIONS, nTouchOptions, 0L);
} void SetTouchOptions(int nTouchOptions, BOOL bEnable)
{
ATLASSERT(::IsWindow(m_hWnd));
::SendMessage(m_hWnd, EM_SETTOUCHOPTIONS, nTouchOptions, bEnable);
} HRESULT InsertTable(TABLEROWPARMS* pRowParams, TABLECELLPARMS* pCellParams)
{
ATLASSERT(::IsWindow(m_hWnd));
return (HRESULT)::SendMessage(m_hWnd, EM_INSERTTABLE, (WPARAM)pRowParams, (LPARAM)pCellParams);
} HRESULT GetTableParams(TABLEROWPARMS* pRowParams, TABLECELLPARMS* pCellParams) const
{
ATLASSERT(::IsWindow(m_hWnd));
return (HRESULT)::SendMessage(m_hWnd, EM_GETTABLEPARMS, (WPARAM)pRowParams, (LPARAM)pCellParams);
} HRESULT SetTableParams(TABLEROWPARMS* pRowParams, TABLECELLPARMS* pCellParams)
{
ATLASSERT(::IsWindow(m_hWnd));
return (HRESULT)::SendMessage(m_hWnd, EM_SETTABLEPARMS, (WPARAM)pRowParams, (LPARAM)pCellParams);
} HRESULT InsertImage(RICHEDIT_IMAGE_PARAMETERS* pParams)
{
ATLASSERT(::IsWindow(m_hWnd));
return (HRESULT)::SendMessage(m_hWnd, EM_INSERTIMAGE, 0, (LPARAM)pParams);
} BOOL SetUiaName(LPCTSTR lpstrName)
{
ATLASSERT(::IsWindow(m_hWnd));
return (BOOL)::SendMessage(m_hWnd, EM_SETUIANAME, 0, (LPARAM)lpstrName);
}
#endif // (_RICHEDIT_VER >= 0x0800)

  总体来说,atlctrls.h中最大的更改就属CRichEditCtrlT了。

更新:看完了其它文件,实在没有什么值得说的,其它文件里改动最多的atltheme.h,也不过是针对vista以上的界面增加两个接口,其它的修改都是小修改。

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

  1. WTL 9.0的变化 - atlapp.h

    忽然发现WTL更新到9.0.4140了,便对比了一下 8.1.12085. 先看看atlapp.h中有什么大的变动. 第61行: #if defined(_SYSINFOAPI_H_) &&a ...

  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] 466. Count The Repetitions 计数重复个数

    Define S = [s,n] as the string S which consists of n connected strings s. For example, ["abc&qu ...

  2. [LeetCode] 48. Rotate Image 旋转图像

    You are given an n x n 2D matrix representing an image. Rotate the image by 90 degrees (clockwise). ...

  3. 关于指针与引用的差别——C++

    准备 https://zhuanlan.zhihu.com/p/27974028 开始 int   是int类型变量声明 int * 是int指针声明,指针其实就是地址变量,用来储存地址值的" ...

  4. kafka压测

    原文并未提及kafka的版本 并且测试的消息大小都偏小  测试数据供参考 原文还测试了broker等    原文请移步文章末尾 4.1 producer测试 4.1.1 batch-size 测试结果 ...

  5. c++小学期大作业攻略(三)用户系统

    Update at 2019/07/22 14:16 发现一个大坑,我们后期是打算用QSS统一堆样式进行美化的,于是我把之前对QLabel进行的setAlignment全部去掉了,打算统一丢进Qss里 ...

  6. MongoDB学习笔记(五)

    MongoDB 查看执行计划 MongoDB 中的 explain() 函数可以帮助我们查看查询相关的信息,这有助于我们快速查找到搜索瓶颈进而解决它,本文我们就来看看 explain() 的一些用法及 ...

  7. C++分治策略实现二分搜索

    问题描述: 给定已排好序的n个元素组成的数组,现要利用二分搜索算法判断特定元素x是否在该有序数组中. 细节须知: (1)由于可能需要对分治策略实现二分搜索的算法效率进行评估,故使用大量的随机数对算法进 ...

  8. 汇编语言01 - 打印 "Hello World!"

    Hello World! 源代码 data segment msg db "Hello World!$";定义名称为msg的字符串,最后加上$,表示字符串结束 data ends ...

  9. vs 发版时,在发版的文件夹中,找不到应该有的某个文件

    检查:VS中,这个文件右击属性,查看生成操作.如果是“无”,改为“内容”.再重新发布就没问题了. 想看发版出来的内容包括哪些,可以从“发布”--“应用程序文件”查看

  10. MySQL难点语法——连接

    本篇涉及的数据表格可以自行查阅上篇<MySQL难点语法——子查询> MySQL的数据表格之间有三种连接方式:等值连接.外连接.自连接.以下是通过举例介绍这三种连接方式 1.等值连接 等值连 ...