本控件主要为了支持布局内元素很多,但是又不想显示滚动条,意图通过按钮来控制布局滚动的情形。
效果图如下:
当布局高度足以容纳所有子控件时:

当布局高度不足以容纳子控件时:
![]()
并且上下按钮支持点击翻页功能。
主要实现思路:
1. 控件构造的时候,把上下两个按钮以及中间的布局给添加到控件里。
2. 控件处理绘制事件的时候,通过判断中间的布局滚动条的显示状态来隐藏/显示上下按钮。
3. 托管上下按钮的点击通知。
4. 由于需要滚动条显示属性的支持,因此只能把滚动条的宽度设置为0,来达到隐藏的效果。
具体代码如下:
.h
class CVerticalLayoutExUI : public DuiLib::CVerticalLayoutUI{
DECLARE_DUICONTROL(CVerticalLayoutExUI);
public:
CVerticalLayoutExUI();
void SetAttribute(LPCTSTR pstrName, LPCTSTR pstrValue);
void DoPaint(HDC hDC, const RECT& rcPaint) override;
bool Add(CControlUI* pControl);
private:
bool OnControlReady(void*);
bool LineUp(vo

本文介绍了一个自定义垂直布局控件的实现方法,该控件在子控件数量较多且不希望显示滚动条的情况下,通过上下按钮控制布局滚动。文章详细阐述了控件的设计思路和具体代码实现。
最低0.47元/天 解锁文章
7769

被折叠的 条评论
为什么被折叠?



