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. A1041 Be Unique (20 分)

    一.技术总结 这题在思考的时候遇见了,不知道怎么处理输入顺序问题,虽然有记录每个的次数,事后再反过来需要出现一次的且在第一次出现, 这时我们其实可以使用另一个数组用来存储输入顺序的字符,然后再用另一个 ...

  2. Computer-Hunters——测试总结

    描述项目的测试工作安排 主要由每个组员在模块功能完成后对自己负责的模块进行测试. 测试工具选择和运用 前端:console界面 后端:人工测试 前端与后端交互:人工测试 测试用例文档pdf的githu ...

  3. QLayout及其子类 清除添加的widget

    起初,我的思路是,先取得Layout的items数量, 然后通过索引来移除每一个items,代码如下: QHBoxLayout * hly = new QHBoxLayout; ; i < ; ...

  4. 前后台$.post交互并返回JSON对象

    1.前台代码: $.post(url,{"blogId":blogId},function(reData){ if(reData.state=="success" ...

  5. 一文搞定所有 web 自动化常见问题

    Firefox 1. Firefox路径问题 firefox火狐浏览器去完成自动化测试时,代码报了如下错误: Cannot find firefox binary in PATH. mark sure ...

  6. 固定定位导致$(window).scrollTop();获取滚动后到顶部距离总是为0

    如下移动端索引列表页面(点击某元素后弹出的页面)    我想用 $(window).scrollTop(); 获取页面滚动后距离顶部的距离,但获取到的值总是0 期间查了很久,但都无疾而终,后来看到一篇 ...

  7. MyBatis 通过 BATCH 批量提交

    本文由 简悦 SimpRead 转码, 原文地址 https://www.jb51.net/article/153382.htm 很多人在用 MyBatis 或者 通用 Mapper 时,经常会问有没 ...

  8. Swagger 自定义UI界面

    Swagger 自定义UI界面 Swagger简单介绍 如何使用Swagger 添加自定义UI界面 使用swagger-ui-layer Swagger ui 的原生UI界面如下: 个人感觉原生UI显 ...

  9. Java8 Optional总结

    分类专栏: Java   版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/HEYUTAO00 ...

  10. How to call a stored procedure in EF Core 3.0 via FromSqlRaw(转载)

    问: I recently migrated from EF Core 2.2 to EF Core 3.0. Unfortunately, I haven't found a way to call ...