为您的应用程序建立投影式立体窗口(阴影)
一打开windows,看着四四方方立在桌面上的应用程序窗口,您是否有些厌倦?别心烦,在window世界里,只要您能为之"心动",生活总是美丽而又精彩的。因而许许多多爱好"多样"的cfan,便为自己的窗口做成了"透明的"、"不规则的"等样式。笔者也心血来潮,将自己的窗口做成了"投影式立体窗口",见下图1: 【相关文章:ASP与ActiveX控件交互实战(二)】
-------------------------------------------------------------------------------- 【扩展阅读:ASP与ActiveX控件交互实战(一)】
怎么样?cool吧! 【扩展信息:ASP与ActiveX控件交互实战(三)】其实,制作这样的立体窗口不是非常难,其原理是这样的(设要为hwnd窗口做个立体):1、获取hwnd在屏幕上的位置(getwindowrect),根据其位置为其建立三个投影窗口,分别命名leftform-左边投影,downform-下面投影,rdform-右下角投影;2、获取三个投影窗口在屏幕上的位置信息,根据黑色渐变原理,将其写入三个投影窗口中。注意:不能直接将其投影信息写入屏幕dc中,否则的话,桌面将会被您绘的一踏糊涂。另外:窗口在移动、改变大小时,均应该重新绘制投影信息。这个在vb中不是非常容易做得到,因此我们需要为其增加一个timer控件,在timer事件监视这一系列的动作。
好了,下面我们开始动手做做这种效果:
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 long end type public declare function selectobject lib "gdi32" ( byval hdc as long, byval hobject as long) as longpublic declare function bitblt lib "gdi32" (
byval hdestdc as long, ... 下一页