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

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

posted @ 2020-12-12 13:21  mohist  阅读(841)  评论(0编辑  收藏  举报