SkinSB皮肤滚动条库的使用

Deom中的示例截图 

说明
     SkinSB库能为Windows标准控件或制定控件设置自定义滚动条皮肤,从而去达到美化控件的目的,如果觉得原Windows滚动条样式无法与你的程序界面搭配的话,那么SkinSB能帮你轻松的完成滚动条皮肤问题。该源代码为C语言编译通过,以标准API调用规范导出来函数,因此它可以在其它语言中使用,只需要将静态连接库改为动态链接库即可。

 

作者 : 李俊

E-Mail : notoldtree@126.com  QQ : 154828

 

历史修订(V1.2)

2008-12-24
修正了RichEdit控件在拖动滑块时滑块没有反应的问题。

2009-05-20
修正了滚动条滑块在拖动时闪烁的问题。

2009-09-21
1.修正了RichEidt设置皮肤滚动条后即使RichEdit中没有内容仍显示有滑块的问题。
2.修正了无滑块时点击箭头时箭头被背景复盖的问题。
3.修改了皮肤资源便于绘制时计算位图资源坐标。
4.修正了水平滚动条箭头按下无法弹起的问题。
5.修正了窗口在不活动状态时滑块显示不出来的问题。

 

下载地址(V1.0):http://download.youkuaiyun.com/source/1013411

下载地址(V1.2):http://download.youkuaiyun.com/source/1712097

 

使用说明

    首先你要确定的是你的控件是一个Windows控件还是一个自定义控件,如果是一个Windows控件那么就必须在程中去使用Detours库,这个库的功能就是截获指定的API函数并将这个API参数传递给你自已的函数处理,因为要绘制滚动条必须先获得滚动信息,由于Windows控件设置滚动信息是由系统完成的,所以就必须使用Detours获取滚动信息。有关Detours的技术资料请访问:http://research.microsoft.com/en-us/projects/detours/

 

下面就以MFC工程的Windows控件作为示例

 

1.首先将下列文件加入工程:



2.设置Detours截获系统设置的滚动信息传递给SkinSB

 

申明HOOK API

将HOOK到的函数的参数传递到SkinSB函数中

加载API HOOK的代码,最好写在CXXXApp::InitInstance()函数中

 卸载API HOOK,最好写在CXXXApp::ExitInstance()函数中

 3.在窗口初始化时为控件设置滚动条皮肤

 

      以上代码就完成了针对Windows控件设置滚动条皮肤的工作,是不是很简单?那么怎样为自定义控件设置滚动条皮肤呢,其实你也可以用以上的方法为你的自定义控件设置滚动条皮肤,好处就是方便,坏处也是有的那就是要在工程中使用Detours库,虽然Detours体积不算大但是考虑到程序的效率和代码的简洁性宁原不使以Detours库。那么如何为自定义控件设置滚动条皮肤呢?SkinSB里导出了滚动条API函数,它的函数原型与Windows Scrollbar API是一样的,只不过每个函数前都有个SkinSB_XXX原因是不和Windows命名的API发生冲突,下面来看下这些函数的说明:

 
      以上这些API用法跟Windows Scrollbar API用法是一样的,只不过多了前面三个函数。有了以上这些函数你就可以为自定义控件设置滚动信息,别忘了用SkinSB_Init来加载皮肤位图,要注意的是要加载的皮肤位图规格必须与Demo中的相同,否则画出来的将是一团糟。最后一点要说明的是这个SkinSB库不能够为ScrollBar控件本身设置皮肤,如果有这样需要可以拿源代码自已改即可。

 

好了我就不多说了,如果文章和代码有不当之处不请P正,有什么建议或者问题请联系我!

评论 53
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值