WTL 9.0的变化 - atlctrls.h
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的更多相关文章
- WTL 9.0的变化 - atlapp.h
忽然发现WTL更新到9.0.4140了,便对比了一下 8.1.12085. 先看看atlapp.h中有什么大的变动. 第61行: #if defined(_SYSINFOAPI_H_) &&a ...
- WTL 9.0的变化 - atlcrack.h
atlcrack.h中是一些对消息映射的简化,9.0版本中只增加了一个WM_MOUSEWHEEL的响应,而且要求windows vista. #if (_WIN32_WINNT >= 0x060 ...
- Swift2.3 --> Swift3.0 的变化
Swift3.0语法变化 首先和大家分享一下学习新语法的技巧: 用Xcode8打开自己的Swift2.3的项目,选择Edit->Convert->To Current Swift Synt ...
- CMMI 2.0术语变化
过程域 vs. 实践域 “过程域”(Process Areas,PAs)在CMMI 2.0中变成了“实践域(Practice Areas,PAs)”.这样的改变,强调了CMMI 2.0是最佳实践的集合 ...
- vue.js学习:1.0到2.0的变化(区别)
一.生命周期 1.1.0的生命周期: 周期 解释 init 组件刚刚被创建,但Data.method等属性还没被计算出来 created 组件创建已经完成,但DOM还没被生成出来 beforeComp ...
- 如何在VC6.0下用pthread.h这个头文件
如何在VC6.0下用pthread.h这个头文件 1.下载PTHREAD的WINDOWS开发包 pthreads-w32-2-4-0-release.exe(任何一个版本均可) http://so ...
- 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 ...
- Swift3.0语法变化
写在前面 首先和大家分享一下学习新语法的技巧:用Xcode8打开自己的Swift2.3的项目,选择Edit->Convert->To Current Swift Syntax- 让Xcod ...
- Vue2.0 相对于Vue1.0的变化:生命周期
1.生命周期 根据提供的生命周期钩子说明Vue.js实例各个阶段的情况,Vue.js 2.0对不少钩子进行了修改,以下说明:(灰色字体代表是 2.0已经废弃或者被更名的钩子,黑色字体代表1.0 和2. ...
随机推荐
- NLP之分词
不同分词工具原理解析 对各种分词工具的介绍,具体参考: http://www.cnblogs.com/en-heng/p/6234006.html 1) jieba 具体参考: https://blo ...
- [LeetCode] 829. Consecutive Numbers Sum 连续数字之和
Given a positive integer N, how many ways can we write it as a sum of consecutive positive integers? ...
- Linux网络编程综合运用之MiniFtp实现(一)
春节过后,万物复苏,在这元宵佳节的前一天,决定继续开启新年的学习计划,生命在于运动,提高源于学习,在经过漫长的Linux网络编程学习后,接下来会以一个综合的小项目来将所学的知识点综合运用,首先是对项目 ...
- 如何备份开拓者TBQuant的策略文件
备份 "C:\TBQuant_V1.1.0.9_X64\users\你的用户名\Strategy\data\strategy.bin" 这个文件即可.
- Zookeeper 运维实践手册
Zookeeper是一个高可用的分布式数据管理与协调框架,该框架能很好地保证分布式环境中数据一致性.一般用来实现服务发现(类似DNS),配置管理,分布式锁,leader选举等. 一.生产环境中Zook ...
- day11——函数名的使用、f格式化、迭代器、递归
day11 函数名的第一类对象及使用 1.可以当作值被赋值给变量 def func(): print(1) print(func) a = func a() 2.当作元素存放在容器中 def func ...
- scala基础题--100以内的数求和,求出当和第一次大于20的当前数【for】
import util.control.Breaks._ object work01 { def main(args: Array[String]): Unit = { //方式一 var sum:I ...
- docke通信之Linux 网络命名空间
一.前言 namespace(命名空间)和cgroup是软件容器化(想想Docker)趋势中的两个主要内核技术.简单来说,cgroup是一种对进程进行统一的资源监控和限制,它控制着你可以使用多少系统资 ...
- 2019-11-29-WPF-高速书写-StylusPlugIn-原理
原文:2019-11-29-WPF-高速书写-StylusPlugIn-原理 title author date CreateTime categories WPF 高速书写 StylusPlugIn ...
- Linux 监控之 IO
简单介绍下 Linux 中与 IO 相关的内容. 简介 可以通过如下命令查看与 IO 相关的系统信息. # tune2fs -l /dev/sda7 ← 读取superblock信息 # blockd ...