introduction

习惯使用fmt库做字符串的格式化操作。尽管nim_duilib提供了类似的函数。

故项目demo_xml引入了外部库fmt

framework.h中添加下面的以便使用fmt库

#include "fmt/format.h"

Note

stage1

相对之前的代码,这次重新调整了库的目录结构。现如下:

.
├─Debug # VS默认输出
├─demo_xml # 主目录
└─ext # 存放扩展库
├─third_party # 存放第三库
│ ├─duilib ## duilib库
│ ├─fmt ## fmt库,字符串格式化库,
│ └─jsoncpp ## json库
└─tool_kits # 待定

stage 2

同时,demo_xml移除了对先前头文件搜索路径的设定,改为当前目录结构下设置指定头文件目录。

stage 3

fmt库,已经设定好了,我用cmake+VS2017生成了对应的工程文件,这样就可以在demo_xml项目中引用fmt库了。

当然,你也可以编译动态库或者静态库,再由demo_xml项目调用静态库或者静态库。

stage 4

xml文件中新增了一个控件richedit用于显示窗口上的其他控件的名字,比如,按钮单击,richedit显示按钮的在xml配置的name或者代码中设置的name;ListBox的item双击,richedit显示item设置的name。 具体的,参考代码。 效果图如下:

stage 5

ListBoxTree控件的item都设置了监听,例如,ListBox的Item的监听双击代码如下:

ui::ListContainerElement* pelement = new(std::nothrow) ui::ListContainerElement;
if (pelement)
{
// 设置item显示的内容
std::wstring str_item = fmt::format(L"{}", i);
pelement->SetText(str_item);
pelement->SetName(str_item);
// 设置item的样式,可以在global.xml中找到
pelement->SetClass(L"listitem");
pelement->SetFixedHeight(20);
plist_->Add(pelement); // 监听双击
pelement->AttachDoubleClick(nbase::Bind(&BasicForm::OnListBoxItemDbClicked, this, std::placeholders::_1));
}

其中,函数OnListBoxItemDbClicked的原型如下:

	// 监听listbox的item的双击
bool OnListBoxItemDbClicked(ui::EventArgs* msg);

OnListBoxItemDbClicked函数体如下:

bool BasicForm::OnListBoxItemDbClicked(ui::EventArgs* msg)
{
if (msg && prichedit_show_)
{
std::wstring str = msg->pSender->GetName();
prichedit_show_->SetText(str);
} return false;
}

stage 6

工程文件体积较大,因为cef相关的文件体积较大。

可以使用light_weiht.bat文件为项目瘦身。Note: 注意避免删除必要项目,可自行修改。 其代码如下:

del /s *.vc.db
del /s *.tlog
del /s *.log
del /s *.idb
del /s *.pdb
del /s *.lastbuildstate
del /s *.ilk
del /s *.exp
del /s *.obj
del /s *.iobj
del /s *.ipch
del /s *.tlh
del /s *.obj.enc
del /s *.tli
del /s *.exp
del /s *.pch rd /s /q %cd%\.vs
del /s %cd%\Debug\*.lib
del /s %cd%\Release\*.lib

stage 7

截至目前,关于nim_duilib库的使用全部代码,可以在 这里 下载。

我使用的环境:win10 1909 + VS2017

nim_duilib(13)之添加fmt库的更多相关文章

  1. AndroidStudio权威教程 AS添加第三方库的6种方式(Jar module so等)

    点击项目设置按钮 依次选择 App > Dependencies 1. 直接搜索法 依次选择 + > Library dependency 这里的搜索一定要是全名的,不然搜不到哦 下图所表 ...

  2. git——添加远程库

    添加远程库 阅读: 406682 现在的情景是,你已经在本地创建了一个Git仓库后,又想在GitHub创建一个Git仓库,并且让这两个仓库进行远程同步,这样,GitHub上的仓库既可以作为备份,又可以 ...

  3. Git添加远程库

    body, table{font-family: 微软雅黑; font-size: 10pt} table{border-collapse: collapse; border: solid gray; ...

  4. 在VS中添加lib库的三种方法

    注意: 1.每种方法也要复制相应的DLL文件到相应目录,或者设定DLL目录的位置,具体方法为:"Properties" -> "Configuration Prop ...

  5. 向modesim中添加alter库 (或者在每次仿真时将库文件加入仿真文件夹一起编译)

    在ModelSim中进行仿真需要加入Quartus提供的仿真库,原因是下面三个方面:    ·Quartus不支持Testbench:    ·调用了megafunction或者lpm库之类的Alte ...

  6. 在ASP.NET 5中如何方便的添加前端库

    (此文章同时发表在本人微信公众号“dotNET每日精华文章”,欢迎右边二维码来关注.) 题记:ASP.NET 5和之前的ASP.NET版本有很大的不同,其中之一就是对前端库的管理不再使用Nuget,而 ...

  7. Auty自动化测试框架第七篇——添加动作库和常量文件库

    [本文出自天外归云的博客园] 添加动作库 因为有很多调用的action类如果一直保存在utils中会让utils库不可维护,所以规定utils库中只放和框架本身有关的工具类,和脚本内容相关的工具类都放 ...

  8. iOS——Xcode中添加第三方库

    一.只有.h和.a文件的库 1.向项目中添加三方库文件 如果添加的第三方库只有.h和.a文件,直接把文件夹拖进项目下面,这时会弹出下面的提示框,一定要勾选下面选择的选项: 这里要注意,在Add to ...

  9. VS2010中添加lib库引用

    VS2010中添加lib库引用: 1 菜单  项目---> 属性--->配置属性-->链接器---->输入---附加依赖项,  加入库名,如: my_API.lib; 或是在c ...

随机推荐

  1. 蛋白质组DIA深度学习之谱图预测

    目录 1. 简介 2. 近几年发表的主要工具 1.DeepRT 2.Prosit 3. DIANN 4.DeepDIA 1. 简介 基于串联质谱的蛋白质组学大部分是依赖于数据库(database se ...

  2. GO 语言使用copy 拷贝切片的问题

    使用copy,直接改变原片的值,而不是先创建一个副本.

  3. 学习java的第六天

    一.今日收获 1.开始了学习手册第二章的学习 2.了解了java里的常量与变量以及数据类型,与c语言的内容类似 二.今日难题 1.都是基础知识,没有什么难题 三.明日目标 1.继续学习java学习手册 ...

  4. JavaScript中var与let的异同点

    var是JavaScript刚出现时就存在的变量声明关键字,而let作为ES6才出现的变量声明关键字,无疑两者之间存在着很大的区别.那么具体有哪些区别呢? 1.作用域表现形式不同,var是函数作用域, ...

  5. Flink(三)【核心编程】

    目录 一.Environment 二.Source 从集合读取数据 从文件读取数据 从kakfa读取数据(常用) 自定义数据源 三.Transform map Rich版本函数 flatMap key ...

  6. 用户名、密码、整数等常用的js正则表达式

    1 用户名正则 //用户名正则,4到16位(字母,数字,下划线,减号) var uPattern = /^[a-zA-Z0-9_-]{4,16}$/; //输出 true console.log(uP ...

  7. jdk1.6,1.7,1.8解压版无需安装(64位)

    1.java SE 1.6各个版本 jdk http://www.oracle.com/technetwork/java/javase/downloads/java-archive-downloads ...

  8. soapui pro 5.1.2 的破解方法

    Protection-4.6,和scz.key这两个文件能破解5.1.2的SoapUI 的Pro版本,mac 和 windows均可.1.拷贝Protection-4.6.jar到soapui安装的l ...

  9. Linux:变量$#,$@,$0,$1,$2,$*,$$,$?

    写一个简单的脚本 vim var 脚本内容如下: #!/bin/sh echo "the number of parameters passed to the script: $#" ...

  10. springboot+vue集成mavon-editor,开发在线文档知识库

    先睹为快,来看下效果: 技术选型 SpringBoot.Spring Security.Oauth2.Vue-element-admin 集成mavon-editor编辑器 安装 mavon-edit ...