- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
ui开发(UI development)
ui开发(UI development)
---------------------------------------------------------------------------------------------------
贫民级换肤控件skinsharp的开发历程
SkinSharp是小生一个人独立开发的换肤产品。开发这个产品的原因和绝大多数朋友一样,买不起Skin++界面。由于对非常热爱,曾经毕业时还想去Skin++去工作,难耐他们老板看不上咱。后来一切证实没去是非常正确的。
因为对这方面非常感兴趣,索性就自力更生吧。关于软件换肤原理其实非常简单,就是钩+小类,替换窗口过程,自己重写界面绘制,基本上就是响应wm_paint,wm_ncpaint消息。但难点就在绘制的处理上,Windows标准控件那么多,每个控件的表现形式可不一样。所以基本上所有的工作都集中在控件的消息响应上了。其实,标准控件是很好做的,捧一本MSDN基本都可以搞定。难点都集中在滚动条,菜单换肤上。市面上换肤产品多如牛毛,但真正滚动条和菜单换肤上做的很好的真的没几个,在滚动条和菜单上我也是花费了2年的时间研究。这个库从2006年初开始动工,到现在已经3年半多了。一般标准控件的绘制我就不说了,基本查查就可以了下面我着重说下控件内部滚动条和菜单的换肤原理MSDN。
控件的内部滚动条并不是单独的控件,他是Windows窗体(或控件)的组成元素,滚动条换肤的难点就是如何禁止系统绘制,因为滚动条位于非客户区,当滚动条状态改变时系统会进行绘制,所以你无论怎么截获消息,都无法让系统不进行绘制。有些朋友可能用滚动条控件来代替控件内部的滚动条,但这是山寨的做法,弊端也是显而易见的。想让系统不进行绘制,那你必须全权接管滚动条信息的管理和绘制提供了有关滚动条的,Windows API,比如
GetScrollInfo,
等等SetScrollInfo,实际上Windows在内部维护的对用户开放的数据结构仅仅是scrollinfo这个结构体而已。那么,我们可不可以自己维护这个scrollinfo,让用户或系统调用的滚动条相关操作都被我们所控制,我们来响应。答案是肯定的。这又回到之前我们说的原理钩,钩的是这次需要API,
将滚动条的操作转入我们的处理过程,处理后返回给系统。这样就达到了我们的目的。至于API钩子方法很多,大家在网上一搜就可以找到一堆。
关于菜单的换肤,有些朋友可能已经知道菜单其实就是一个窗口类名为”# 32768”,所以你可以通过窗口类名来进行钩了。主要的问题是你怎么才能获取到菜单的句柄呢?对于菜单消息,MSDN上只有一个就是mn_gethmenu,不错,就是他。
You can get the menu handle by sending this message to the menu window. This is easy to handle. With the menu handle, you can do it by yourself. Its that simple.
One of the more difficult things to deal with is the window title bar, because the title bar changes itself when the elements change. A lot of skin library (including Skin++) approach is to avoid the title bar, the title bar style WS_CAPTION removed, he set aside a piece of non client area to draw the title bar, this method seems perfect, in fact, a lot of drawbacks for the WS_CAPTION form is a very important style. Many items that remove the WS_CAPTION system menu are invalid. There are other handy drawbacks, such as system rendering, borders, and so forth under Vista systems. So as the skin library, should avoid as far as possible to modify the default attribute and style program. Skin
您可能关注的文档
- fanuc系统部分功能的技术术语及解释(Technical terms and explanations of some functions of FANUC system).doc
- fansub资料整理一战斗妖精雪风专用名词、缩写、航空术语及其他注释(Fansub data collation 1 Combat fairy, snow wind terminology, abbreviations, aviation terms and other notes).doc
- fc策略游戏勇者斗恶龙3全攻略(FC strategy game Dragon Quest 3 Raiders).doc
- ffx的一些走盘(Some FFX plates).doc
- fedora9 下搭建qt creator的arm开发环境并移植qt4.6.3-books到mini2440(Fedora9 built under QT creator arm development environment, and transplant qt4.6.3-books to mini2440).doc
- flashbuilder4快捷键(Flashbuilder4快捷键).doc
- flash读取xml(flash读取xml).doc
- fanuc数控铣床g.m功能代码全解(Fanuc CNC milling machine, G.M function code, full solution).doc
- finnciti(原名smi)公司的利润来源和开发商收益(Finnciti (formerly known as SMI), the company's profit sources and developers income).doc
- for的语法上下().doc
- ultraedit快捷键(UltraEdit快捷键).doc
- unit 4(单元 4).doc
- unix管道功能在系统备份中的妙用(Application of UNIX function in the pipeline system backup).doc
- u盘文件夹打不开的解决方法(The solution U disk folder not open).doc
- uv 镜子(UV mirror).doc
- u盘无法弹出---从此您将不再为此发愁(U can't eject - then you will no longer worry about).doc
- vary渲染器详解(二)(Vary renderer details (two)).doc
- uv镜(UV mirror).doc
- vb中常用属性意义(Common attribute meaning in VB).doc
- vb中的模块和类模块的区别2(The difference between modules and class modules in VB 2).doc
文档评论(0)