CSkinScrollBar(派生自CScrollBar) CSkinScrollBar提供了一个所有者绘制滚动条

本文介绍了CSkinScrollBar类,这是一个基于CScrollBar的派生类,用于实现所有者绘制的滚动条。通过调用SkinWndScroll函数,可以轻松替换如TreeCtrl等控件的内置滚动条。文章还讨论了在ListCtrl上应用自定义滚动条时遇到的问题及解决方案,并提供了相关代码示例。
摘要由CSDN通过智能技术生成

CSkinScrollWnd* SkinWndScroll(CWnd *pWnd,HBITMAP hBmpScroll); 在我的代码的帮助下,您只需要在您的代码中添加一行代码。例如,假设您在窗口中有一个treectrl,并且您想替换它的滚动条。首先,你给它一个名字m_ctrlTree。下一步是当它被初始化时,添加如下一行: 隐藏,复制Code

SkinWndScroll(&m_ctrlTree,hBmpScroll)
如何测试我的项目? 界面中有4种控件,分别是listbox、treectrl、editctrl、richeditctrl。单击list_addstring按钮将填充listctrl,您将看到一个左边的滚动条。点击tree_addnode按钮将填充treectrl,您可能会看到两个ownerdraw滚动条替换了它的内部滚动条。在两个编辑框中输入文本,以查看它是否工作。 如何准备你的滚动条位图? 垂直和水平滚动条都需要4个图像片段。它们是向上/向左,滑动,拇指和向下/向右。每一个都包括3种状态:正常状态,悬停状态,按下状态。(很容易扩展对国家的支持。因为我不擅长图像处理,所以这个位图样本来自于一个软件的资源。)除了这些片段,位图还包括位于位图右侧的两个角度片段。 Sample image 现在我想向你们展示我遇到的问题 当我开始这段代码时,我尝试使用scrollbarctrl来覆盖窗口的内部滚动条。在我看来,只有滚动条窗口的Z阶较高,它才能正常工作。但事实上,这是行不通的。虽然我的滚动条窗口的z顺序较高,但当鼠标移动到滚动条区域时,内部的滚动条将立即呈现。我必须添加一个新窗口作为一个框架到目标窗口。一开始,我并没有打算支持leftscrollbar样式,所以我的代码运行得很好。最后,我决定支持它。但让我沮丧的是,它不再工作。在花了很多时间调试后,我发现它是

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值