为您的应用程序建立投影式立体窗口(阴影)_第1页
为您的应用程序建立投影式立体窗口(阴影)_第2页
为您的应用程序建立投影式立体窗口(阴影)_第3页
为您的应用程序建立投影式立体窗口(阴影)_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、    为您的应用程序建立投影式立体窗口(阴影)-一打开WINDOWS,看着四四方方立在桌面上的应用程序窗口,您是否有些厌倦?别心烦,在WINDOW世界里,只要您能为之"心动",生活总是美丽而又精彩的。因而许许多多爱好"多样"的CFAN,便为自己的窗口做成了"透明的"、"不规则的"等样式。笔者也心血来潮,将自己的窗口做成了"投影式立体窗口",见下图1:怎么样?Cool吧!其实,制作这样的立体窗口不是非常难,其原理是这样的(设要为hWnd窗口做个立体):1、

2、获取hWnd在屏幕上的位置(GetWindowRect),根据其位置为其建立三个投影窗口,分别命名LeftForm-左边投影,DownForm-下面投影,RdForm-右下角投影;2、获取三个投影窗口在屏幕上的位置信息,根据黑色渐变原理,将其写入三个投影窗口中。注意:不能直接将其投影信息写入屏幕DC中,否则的话,桌面将会被您绘的一踏糊涂。另外:窗口在移动、改变大小时,均应该重新绘制投影信息。这个在VB中不是非常容易做得到,因此我们需要为其增加一个Timer控件,在Timer事件监视这一系列的动作。好了,下面我们开始动手做做这种效果:1、启动VB6.0,建立一个新的标准exe工程文件,将启动主窗

3、口FormName命名为"MainForm",并将ScaleMode设置为3,另外再新添建三个窗口,分别命名为"LeftForm","DownForm","RdForm",并且将其"BorderStyle"设置为"0-None",将各自的GotFocus事件中写入如下代码:MainForm.setfocus2、新建一个模块API.bas(可以用"外接程序"中的"API浏览器"),插入如下代码:Public Const SRCCOPY =

4、 &HCC0020Public Type RECT    Left As Long    Top As Long    Right As Long    Bottom As LongEnd TypePublic Declare Function SelectObject Lib "gdi32" (     ByVal hdc As Long,   &

5、#160;  ByVal hObject As Long) As LongPublic Declare Function BitBlt Lib "gdi32" (     ByVal hDestDC As Long,      ByVal x As Long,      ByVal y As Long,      ByVal nWidth As Long,     

6、ByVal nHeight As Long,      ByVal hSrcDC As Long,      ByVal xSrc As Long,      ByVal ySrc As Long,      ByVal dwRop As Long) As LongPublic Declare Function SetPixel Lib "gdi32" (     ByVal

7、hdc As Long,      ByVal x As Long,      ByVal y As Long,      ByVal crColor As Long) As LongPublic Declare Function GetPixel Lib "gdi32" (     ByVal hdc As Long,      ByVal x As Long,  

8、    ByVal y As Long) As LongPublic Declare Function CreateCompatibleDC Lib "gdi32" (ByVal hdc As Long) As LongPublic Declare Function CreateCompatibleBitmap Lib "gdi32" (    ByVal hdc As Long,     ByVal nWidth As Long,  

9、   ByVal nHeight As Long) As LongPublic Declare Function DeleteObject Lib "gdi32" (ByVal hObject As Long) As LongPublic Declare Function DeleteDC Lib "gdi32" (ByVal hdc As Long) As LongPublic Declare Function GetDC Lib "user32" (ByVal hwnd As Long) As Lon

10、gPublic Declare Function GetWindowRect Lib "user32" (    ByVal hwnd As Long,     lpRect As RECT) As Long'取色彩中的Red的值Public Function GetRed(ByVal n As Long) As IntegerGetRed = n Mod 256&End Function'取色彩中的Green的值Public Function GetGreen(ByVa

11、l n As Long) As IntegerGetGreen = (n 256&) Mod 256&End Function'取色彩中的Blue的值Public Function GetBlue(ByVal n As Long) As IntegerGetBlue = n 65536End Function'获取渐变色彩值'入口参数:SrcColor 原色彩'    Steps 步骤数'    CurStep 当前的步子'  &#

12、160; DstColor 目标色彩'返回值:当月前的色彩值Public Function GetTrienColor(ByVal scrColor As Long, ByVal dstColor As Long, ByVal Steps As Integer, ByVal curStep As Integer) As LongDim sR, sG, sB, dR, dG, dB As IntegersR = GetRed(scrColor)sG = GetGreen(scrColor)sB = GetBlue(scrColor)dR = GetRed(dstColor)dG = GetGreen(dstColor)dB = GetBlue(dstColor)sR = sR + curStep * (dR - sR) / StepssG = sG + curStep * (dG - sG) / StepssB = sB + curStep * (dB - sB) / StepsGetTrienCol

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论