nim_duilib(13)之添加fmt库
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
ListBox和Tree控件的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库的更多相关文章
- AndroidStudio权威教程 AS添加第三方库的6种方式(Jar module so等)
点击项目设置按钮 依次选择 App > Dependencies 1. 直接搜索法 依次选择 + > Library dependency 这里的搜索一定要是全名的,不然搜不到哦 下图所表 ...
- git——添加远程库
添加远程库 阅读: 406682 现在的情景是,你已经在本地创建了一个Git仓库后,又想在GitHub创建一个Git仓库,并且让这两个仓库进行远程同步,这样,GitHub上的仓库既可以作为备份,又可以 ...
- Git添加远程库
body, table{font-family: 微软雅黑; font-size: 10pt} table{border-collapse: collapse; border: solid gray; ...
- 在VS中添加lib库的三种方法
注意: 1.每种方法也要复制相应的DLL文件到相应目录,或者设定DLL目录的位置,具体方法为:"Properties" -> "Configuration Prop ...
- 向modesim中添加alter库 (或者在每次仿真时将库文件加入仿真文件夹一起编译)
在ModelSim中进行仿真需要加入Quartus提供的仿真库,原因是下面三个方面: ·Quartus不支持Testbench: ·调用了megafunction或者lpm库之类的Alte ...
- 在ASP.NET 5中如何方便的添加前端库
(此文章同时发表在本人微信公众号“dotNET每日精华文章”,欢迎右边二维码来关注.) 题记:ASP.NET 5和之前的ASP.NET版本有很大的不同,其中之一就是对前端库的管理不再使用Nuget,而 ...
- Auty自动化测试框架第七篇——添加动作库和常量文件库
[本文出自天外归云的博客园] 添加动作库 因为有很多调用的action类如果一直保存在utils中会让utils库不可维护,所以规定utils库中只放和框架本身有关的工具类,和脚本内容相关的工具类都放 ...
- iOS——Xcode中添加第三方库
一.只有.h和.a文件的库 1.向项目中添加三方库文件 如果添加的第三方库只有.h和.a文件,直接把文件夹拖进项目下面,这时会弹出下面的提示框,一定要勾选下面选择的选项: 这里要注意,在Add to ...
- VS2010中添加lib库引用
VS2010中添加lib库引用: 1 菜单 项目---> 属性--->配置属性-->链接器---->输入---附加依赖项, 加入库名,如: my_API.lib; 或是在c ...
随机推荐
- windows和linux文本的编码格式不一样所出的错
windows下编写的python脚本上传的linux下执行会出现错误: usr/bin/python^M: bad interpreter: No such file or directory 原因 ...
- A Child's History of England.50
'Knave [man without honor]!' said King Richard. 'What have I done to thee [you] that thou [you] shou ...
- 大数据学习day26----hive01----1hive的简介 2 hive的安装(hive的两种连接方式,后台启动,标准输出,错误输出)3. 数据库的基本操作 4. 建表(内部表和外部表的创建以及应用场景,数据导入,学生、分数sql练习)5.分区表 6加载数据的方式
1. hive的简介(具体见文档) Hive是分析处理结构化数据的工具 本质:将hive sql转化成MapReduce程序或者spark程序 Hive处理的数据一般存储在HDFS上,其分析数据底 ...
- 关于C语言中不同类型数据进行计算 有符号和无符号数进行计算
float是8个有效位, 做个试验: 输出如下: 上面说明了什么: 1, 18/2.2 是除不尽的, 因为是define,所以没有给ratio变量赋值类型,但是从sizeof输出的结果是8,所以系统默 ...
- C++福尔摩斯的约会
这道题的要求总结如下: 1.DAY 星期 大写字母:A B C D E F G2.HH 时 数字+大写字母 0 1 2 3 4 5 6 7 8 9 A B C D E F G H I J K L M ...
- Rust 总章
1.1 Rust安装 3.5 Rust Generic Types, Traits, and Lifetimes 3.6 String 与 切片&str的区别 https://openslr. ...
- References in C++
When a variable is declared as reference, it becomes an alternative name for an existing variable. A ...
- 使用NSURLSessionDownloadTask实现大文件下载-监听下载进度
- 5.1 涉及知识点(1)创建NSURLSession并设置代理,通过NSURLSessionDownloadTask并以代理的方式来完成大文件的下载 //1.创建NSURLSession,设置代理 ...
- 关于为了一时方便,使用@Scheduled注解定时踩的坑
摘要: 事情是这样的前两周在做项目的时候碰到一个需求---要求每天晚上执行一个任务,公司统一使用的是 xxl-job 写定时任务的,我当时为了方便自己,然后就简单的使用了Spring的那个@Sched ...
- 前端避坑指南丨辛辛苦苦开发的 APP 竟然被判定为简单网页打包?
传统混合移动App开发模式,通常会使用WebView作为桥接层,但随着iOS和Android应用商店审核政策日趋严格,有时会被错误判定为简单网页打包成App,上架容易遭到拒绝. 既然可能存在风险,那我 ...