VS2019 WIN32 DUILIB给控件(Edit)增加自定义属性(TipValue)

官方版本的Duilib比较阳春,缺少一些目前类HTML5的属性,比如输入框默认字符等,本文章就意在记录自定制方法。关于Duilib介绍以及环境配置方法,请看我另一篇文章https://kefong.blog.csdn.net/article/details/120124811。

一、准备
在DuiLib官方源码处,新建一个测试项目,用于立刻验证和调试,引用DuiLib。具体看我另一篇文章https://kefong.blog.csdn.net/article/details/120124811
VS2019 WIN32 DUILIB给控件(Edit)增加自定义属性(TipValue)_第1张图片
二、修改Control/UIEdit.cpp
找到方法void CEditUI::SetAttribute(LPCTSTR pstrName, LPCTSTR pstrValue),在本方法最后一个esle if前,增加自定义属性tipvalue

else if( _tcsicmp(pstrName, _T("tipvalue")) == 0 ) SetTipValue(pstrValue);

VS2019 WIN32 DUILIB给控件(Edit)增加自定义属性(TipValue)_第2张图片
测试方法SetTipValue是不存在的,所以会报错,接着同样是在本文件中实现此方法,
UIEdit.h

...
public:
...
void SetTipValue(LPCTSTR pStrTipValue);
...
protected:
...
CDuiString m_sTipValue;
...

UIEdit.cpp

...
void CEditUI::SetTipValue( LPCTSTR pStrTipValue )
{
	m_sTipValue	= pStrTipValue;
}
...

此时,在模板文件的Edit内增加相应属性tipvalue=“123456”,并调试程序,可以看出duilib已经获取到对应的值了,成功了一半了!
VS2019 WIN32 DUILIB给控件(Edit)增加自定义属性(TipValue)_第3张图片
在这里插入图片描述
接着把这个值显示在空值得输入框里(如果有值就不显示),找到方法:void CEditUI::PaintText(HDC hDC),看到有个判断.IsEmpty,原来如果值为空的话,直接就return了,我们要对其进行改造下,显示我们自定义的内容
VS2019 WIN32 DUILIB给控件(Edit)增加自定义属性(TipValue)_第4张图片
根据原代码可以看出,sText就是输入框界面上显示的值,那我们将此变量放在安排是否为空之前,如果为空时将默认提示文字赋给他,如果值不为空时,继续保持执行原来的代码。
VS2019 WIN32 DUILIB给控件(Edit)增加自定义属性(TipValue)_第5张图片
OK,看效果
VS2019 WIN32 DUILIB给控件(Edit)增加自定义属性(TipValue)_第6张图片

你可能感兴趣的:(VC++,c++)