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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM