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.csdn.net/source/1013411

下载地址(V1.2):http://download.csdn.net/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正,有什么建议或者问题请联系我!

本源码来自外星人源码论坛 文件夹 PATH 列表 卷序列号码为 0006EE50 EC5F:C44B C:. │ v5目录的结构树.TXT │ www.eenot.net.bat │ ├─开发 │ ├─Include │ │ │ AndroidUserItem.h │ │ │ AndroidUserManager.h │ │ │ Array.h │ │ │ AvatarControlHead.h │ │ │ BitImage.h │ │ │ BitImageEx.h │ │ │ CameraControl.h │ │ │ CMD_Commom.h │ │ │ CMD_Correspond.h │ │ │ CMD_GameServer.h │ │ │ CMD_LogonServer.h │ │ │ CustomFaceManager.h │ │ │ Custsite.h │ │ │ D2DEngine.h │ │ │ D2DInterface.h │ │ │ D3DDevice.h │ │ │ D3DDirect.h │ │ │ D3DFont.h │ │ │ D3DMusic.h │ │ │ D3DSound.h │ │ │ D3DSoundBuffer.h │ │ │ D3DSoundThread.h │ │ │ D3DSprite.h │ │ │ D3DSurface.h │ │ │ D3DTexture.h │ │ │ DataBaseAide.h │ │ │ Define.h │ │ │ DFontEx.h │ │ │ DirectShowBasic.h │ │ │ DlgBrowser.h │ │ │ DlgGameRule.h │ │ │ DlgInsureCounter.h │ │ │ DlgInsureGame.h │ │ │ DlgMatchAwards.h │ │ │ DlgServerItem.h │ │ │ DlgServerWizard.h │ │ │ DlgTrumpetItem.h │ │ │ DlgVideoClone.h │ │ │ DownLoad.h │ │ │ DownLoadHead.h │ │ │ Expression.h │ │ │ FaceCustomControl.h │ │ │ FaceItemControl.h │ │ │ FaceItemView.h │ │ │ FaceSelectControl.h │ │ │ Flash.ocx │ │ │ FlashControl.h │ │ │ GameEngineHead.h │ │ │ GameFrameApp.h │ │ │ GameFrameAvatar.h │ │ │ GameFrameControl.h │ │ │ GameFrameEngine.h │ │ │ GameFrameHead.h │ │ │ GameFrameMedalView.h │ │ │ GameFramePublicize.h │ │ │ GameFrameService.h │ │ │ GameFrameUserView.h │ │ │ GameFrameView.h │ │ │ GameFrameViewD3D.h │ │ │ GameFrameViewGDI.h │ │ │ GameFrameWnd.h │ │ │ GamePropertyCtrl.h │ │ │ GamePropertyHead.h │ │ │ GamePropertyItem.h │ │ │ GamePropertyManager.h │ │ │ GameServiceHead.h │ │ │ GIFImage.h │ │ │ GlobalServer.h │ │ │ GlobalUnits.h │ │ │ GlobalUserInfo.h │ │ │ HeadTranslate.h │ │ │ IDispimp.h │ │ │ ImageEditorControl.h │ │ │ ImageOle.dll │ │ │ Information.h │ │ │ IPC_GameFrame.h │ │ │ K
评论 53
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值