duilib : 改变资源类型,加快程序运行速度.

以前程序中使用duiLib的资源文件,一直指定为 UILIB_ZIP.

可以最近在写一个从设备中读取信息的List填充,当设备插入时的同时,用鼠标托住UI乱晃,在程序填充List的时候,卡了一下。

从设备中读取信息,是在线程中做的。只可能是填充数据的时候卡了。

经过测量,发现问题在生成每一行的ListItem处。因为每一个ListItem都是装入的xml文件。

每次刷新List之前,因为不同的设备信息数量不同。为了简单,直接将List清掉。再重新填充。

这样导致从磁盘读取ListItem的xml文件随行数的增加,时间也增加。

今天想到一招,将资源类型改为 UILIB_ZIPRESOURCE, 试了试,同样的操作,感觉不到卡,  DuiLib设计的NB啊, 连这都能为用户想到.

资源类型改变后,改动的代码很少.

/// @file		XmlWnd.h
/// @brief		从Xml文件生成的窗体基类

#ifndef __XML_WND_H__
#define __XML_WND_H__

class CXmlWnd : public WindowImplBase
{
public:
    // CXmlWnd();
	CXmlWnd(WCHAR * pcXmlFileName, WCHAR * pcWndClassName);
	virtual ~CXmlWnd();

	/// 返回的资源类型是Zip时, 调不到GetSkinFolder, 因为是纯虚函数, 要实现一下
	virtual CDuiString GetSkinFolder(void);

	/// 以下的虚函数都是能调到的
    virtual LRESULT WndMessageProc(UINT uMsg, WPARAM wParam, LPARAM lParam);
    virtual LRESULT SysMessageProc(UINT uMsg, WPARAM wParam, LPARAM lParam, bool& bHandled);

	virtual CDuiString GetZIPFileName() const;
	virtual CDuiString GetSkinFile();
	virtual LPCTSTR GetWindowClassName(void) const;
	virtual UILIB_RESOURCETYPE GetResourceType() const;
    virtual LPCTSTR GetResourceID() const;

UILIB_RESOURCETYPE CXmlWnd::GetResourceType() const
{
	return UILIB_ZIPRESOURCE;
}

LPCTSTR CXmlWnd::GetResourceID() const
{
    return MAKEINTRESOURCE(IDR_BIN_SKIN_ZIP);
}

/
//
// BIN
//

IDR_BIN_SKIN_ZIP        ZIPRES                     "..\\uidesign\\skin.zip"



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值