1、duilib入门基础类CduiString

1、sizeof(CDuiString)的大小是68字节:4字节的字符串指针+64字节的缓冲区。

  这里使用64字节的额外缓冲区的目的是为了以空间换时间的方法,当遇到长度小于64的字符串时候直接使用该缓冲区而不用每次去申请内存。

  这里跟std::string类似,都是使用小缓冲区来保留大小。std::string是28字节:4总长度+4当前字符长度+16字节联合体(16字节buf,4字节指针)+4字节的内存构造类。

2、CDuiString使用的是以字符串为结尾的方式进行计算当前的字符串的长度。当长度为X小于64的时候需要注意后面的64-X的内存是不为零的。

3、CDuiString没有全局的CDuiString operator==(const CDuiString&, const CDuiString&);所以在使用上需要注意判断相等不要使用程序员很容易出现的常量放在前面的状况。

时间: 2024-08-09 11:14:49

1、duilib入门基础类CduiString的相关文章

duilib入门简明教程 -- 部分bug (11) (转)

原文转自:http://www.cnblogs.com/Alberl/p/3344886.html 一.WindowImplBase的bug 在第8个教程[2013 duilib入门简明教程 -- 完整的自绘标题栏(8)]中,可以发现窗口最大化之后有两个问题, 1.最大化按钮的样式还是没变,正确的样式应该是这样的 2.再次点击最大化按钮,不能还原到正常大小. 这个是WindowImplBase的bug,已经提交给官方有一段时间了,但是貌似没有被合并到SVN上去,所以这里说明一下, 我们需要在Wi

duilib入门简明教程 -- 第一个程序 Hello World(3) (转)

原文转自 http://www.cnblogs.com/Alberl/p/3343579.html 小伙伴们有点迫不及待了么,来看一看Hello World吧: 新建一个空的win32项目,新建一个main.cpp文件,将以下代码复制进去: #include <windows.h> #include <tchar.h> int APIENTRY _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdL

2013 duilib入门简明教程 -- 结合win32和MFC (16)

http://www.cnblogs.com/Alberl/p/3352696.html 虽然duilib自带在MFC中使用duilib的Demo,但只是MFC窗口和duilib窗口不重叠的情况.如果要在MFC窗口中嵌入duilib控件,或者在duilib控件中嵌入MFC的控件的话,就没有Demo可以看了,其实Alberl开始也不知道怎么办,看了下ActiveXUI控件,这个就是结合HWND的,但是由于接触duilib不久,所以一时无法看懂ActiveXUI到底是怎么将win32的HWND画上去

实战c++中的string系列--CDuiString和string的转换(duilib中的cduistring)

使用所duilib的人定会知道cduistring类型,先看看这个类是怎么定义的: class UILIB_API CDuiString { public: enum { MAX_LOCAL_STRING_LEN = 127/*63*/ }; CDuiString(); CDuiString(const TCHAR ch); CDuiString(const CDuiString& src); CDuiString(LPCTSTR lpsz, int nLen = -1); ~CDuiStrin

duilib入门简明教程 -- VS环境配置(2) Alberl

既然是入门教程,那当然得基础点,因为搜索duilib相关资料时,发现有些小伙伴到处都是编译错误,以及路径配置错误等等,还有人不知道SVN,然后一个个文件手动下载的. 其实吧,duilib的定位好像是这样的: 有一定的界面基础,懂MFC.WTL.windows消息机制等等. 不然的话,即使环境配置好了,看Demo也绕晕你~\(^o^)/~ 所以对于没有任何基础的童鞋,请先打好基础,不然学习duilib会走更多歪路,推荐以下资料: 书籍:<windows程序设计> 教程: 孙鑫视频(这个我只下载了

duilib入门简明教程 -- VS环境配置(2) (转)

原文转自:http://www.cnblogs.com/Alberl/p/3342030.html 既然是入门教程,那当然得基础点,因为搜索duilib相关资料时,发现有些小伙伴到处都是编译错误,以及路径配置错误等等,还有人不知道SVN,然后一个个文件手动下载的. 其实吧,duilib的定位好像是这样的: 有一定的界面基础,懂MFC.WTL.windows消息机制等等. 不然的话,即使环境配置好了,看Demo也绕晕你~\(^o^)/~ 所以对于没有任何基础的童鞋,请先打好基础,不然学习duili

duilib入门问题集

问:如何把资源放入zip?答: 先SetResourcePath设置资源目录,再SetResourceZip设置压缩资源文件名 问:如何设置窗体的初始化大小?答:设置XML文件的Window标签的size属性. 问:如何设置鼠标可拖动窗体的范围大小?答:设置XML文件的Window标签的caption属性. 问:如何设置窗体可以通过拖动边缘改变大小?答:在窗体创建函数的第三个参数设置为UI_WNDSTYLE_FRAME才可响应拖动改变大小,和双击标题事件. 问:为何鼠标移动到边缘没有改变窗体大小

duilib入门简明教程 -- 响应按钮事件(4) (转)

原文转自 http://www.cnblogs.com/Alberl/p/3343610.html 上一个Hello World的教程里有一句代码是这样的:CControlUI *pWnd = new CButtonUI; 也就是说,其实那整块绿色背景区域都是按钮的区域.(这里简要介绍下,CControlUI 是duilib中所有控件的基类,而CButtonUI则是按钮类,更多的控件会在后面的教程一一介绍.) 那么怎样响应按钮的点击消息呢? 我们需要几个步骤: 1.调用AddNotifier函数

入门学习duilib的要点

转载请说明原出处:http://blog.csdn.net/zhuhongshu/article/details/43816875 在QQ群里经常会有刚开始学习duilib的朋友加入,问到一些属性用法和布局问题.为了避免一遍一遍重复回答,今天写个入门文章,简单说一下刚开始学duilib需要注意的地方,和学习duilib的方法. alberl写过<duilib入门简明教程>和<duilib进阶教程>,是很不错的入门教程.再搭配duilib自带的9个demo,就可以完整的学到duili