为您的应用程序建立投影式立体窗口(阴影)
一打开windows,看着四四方方立在桌面上的应用程序窗口,您是否有些厌倦?别心烦,在window世界里,只要您能为之"心动",生活总是美丽而又精彩的.因而许许多多爱好"多样"的cfan,便为自己的窗口做成了"透明的"."不规则的"等样式.笔者也心血来潮,将自己的窗口做成了"投影式立体窗口",见下图1: 【程序编程相关:在C#中应用MapObjects(图层标】
-------------------------------------------------------------------------------- 【推荐阅读:ASP编程中树型结构的提交】
其实,制作这样的立体窗口不是非常难,其原理是这样的(设要为hwnd窗口做个立体):1.获取hwnd在屏幕上的位置(getwindowrect),根据其位置为其建立三个投影窗口,分别命名leftform-左边投影,downform-下面投影,rdform-右下角投影;2.获取三个投影窗口在屏幕上的位置信息,根据黑色渐变原理,将其写入三个投影窗口中.注意:不能直接将其投影信息写入屏幕dc中,否则的话,桌面将会被您绘的一踏糊涂.另外:窗口在移动.改变大小时,均应该重新绘制投影信息.这个在vb中不是非常容易做得到,因此我们需要为其增加一个timer控件,在timer事件监视这一系列的动作. 【扩展信息:在C#中应用MapObjects(转换坐】
怎么样?cool吧!好了,下面我们开始动手做做这种效果:
1.启动vb6.0,建立一个新的标准exe工程文件,将启动主窗口formname命名为"mainform",并将scalemode设置为3,另外再新添建三个窗口,分别命名为"leftform","downform","rdform",并且将其"borderstyle"设置为"0-none",将各自的gotfocus事件中写入如下代码:
mainform.setfocus
2.新建一个模块api.bas(可以用"外接程序"中的"api浏览器"),插入如下代码:
public const srccopy = &hcc0020
public type rect
left as long top as long right as long bottom as longend type public declare function selectobject lib "gdi32" ( byval hdc as long, byval hobject as long) as long... 下一页