a我考网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 59|回复: 0

[Visual Basic] 计算机二级VB辅导:用VB实现屏幕阴暗操作

[复制链接]
发表于 2012-7-31 22:10:12 | 显示全部楼层 |阅读模式
  使用过Windows 9x的用户都应该知道,在关闭Windows系统时,整个屏幕会暗下来,那么,如何在自己开发的应用程序中也实现这一效果呢?我们通过调用一组API函数就可以实现,如果你有兴趣,就跟我来吧!这一组函数是:
& p! c/ h0 A- z* i- a  GetDC :用来获取屏幕的设备号;
1 g2 ]7 b( f6 j! G+ E) m* z: H, w. W  ReleaseDC :释放指定的设备;- P4 E4 s/ B5 P2 O
  CreatePatternBrush :创建图形刷子;( n2 R: U$ C9 Z! e+ e& |8 C# Q! i
  PatBlt: 利用创建的图形刷子填充指定设备;
/ }5 U: U4 e* ^/ W6 B  DeleteObject :删除创建的对象(与CreatePatternBrush创建的刷子对象呼应);
1 G- R( W& `* H# W3 B& B9 I  CreateBitmap :创建BMP对象;6 e. o/ w: X8 c1 i
  SelectObject :选择当前操作对象;
2 Y) g4 h  L' u7 }5 L8 \. k  InvalidateRect :使操作无效,即恢复变暗前的状态。
, s: Q- s! N& S& F" S/ ~( D  基本思路
* c3 B+ s4 @1 c/ D1 i5 z4 J& ]  首先创建一个位图对象,然后,利用此位图对象创建一个图案刷子,选择指定设备为当前设备,利用已经创建的图案刷子填充当前设备,删除创建的刷子对象即可使当前设备变暗。调用InvalidateRect函数就可使指定设备恢复到变暗前的状态。- d) A- t3 h8 @5 O: d2 U
  步 骤7 m( L" Q6 V, m; V
  1、创建一个Form1窗体,设置2个Command按钮,将Command1和Command2的Caption属性分别设置为:“变暗”和“恢复”。9 F. N1 Q) s- N5 _
  2、在窗体代码模块中声明API函数和相应的类型,代码如下:
% r7 {: g2 A4 Q+ T9 A  Private Type RECT
+ F! Z1 V3 |2 L! m; k8 Q  Left As Long
  B5 b4 K6 o4 b/ y  Top As Long! j) u( Q8 S( o0 t4 |+ V. V
  Right As Long* h# G0 _0 n/ `# h5 g& M6 n
  Bottom As Long
7 p" @6 I0 g+ G9 X) M' K. O  End Type5 {% A3 o# M1 D* E
  Private Declare Function GetDC Lib "user32" (ByVal hwnd As Long) As Long
! N  @, v' `8 Z0 k. M  Private Declare Function ReleaseDC Lib "user32" (ByVal hwnd As Long, ByVal hdc As Long) As Long
: q- X: d( I. S! ^* a! m. @% T  Private Declare Function CreatePatternBrush Lib "gdi32" (ByVal hBitmap As Long) As Long
  R* z6 l* W7 f. _# G: O( |  Private Declare Function PatBlt Lib "gdi32" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal dwRop As Long) As Long
9 \8 f, ?4 O1 }: t8 q  Private Declare Function DeleteObject Lib "gdi32" (ByVal hObject As Long) As Long
1 P# s% [% X8 P, c- W  _6 h" v2 `  Private Declare Function CreateBitmap Lib "gdi32" (ByVal nWidth As Long, ByVal nHeight As Long, ByVal nPlanes As Long, ByVal nBitCount As Long, lpBits As Any) As Long  m2 E- e! v' O" D8 \
  Private Declare Function SelectObject Lib "gdi32" (ByVal hdc As Long, ByVal hObject As Long) As Long6 N/ p5 d# U/ \" j- n( `. H
  Private Declare Function InvalidateRect Lib "user32" (ByVal hwnd As Long, lpRect As RECT, ByVal bErase As Long) As Long# y4 V" [" N/ }# F- H9 {# r
  3、编写代码实现程序功能,由于版面所限,具体代码将放到CCE网站(http://www.cce.com.cn)。
( B7 K- S7 ?% I  以上就是屏幕变暗的方法。如果要使窗体、图片框等对象变暗,只要使窗体或图片框等对象获取句柄即可,修改Command1_Click过程和Command2_Click过程中的以下语句即可实现窗体变暗。9 w# m' l! Q1 F  r1 y( M" r
  hdc5=Form1.Hdc;: w4 Z6 z! ~+ t1 U" X
  Width5=Form1.width;
' E* Y" O% ]; e( l1 @  height5=Form1.height;
/ }9 s$ }7 G. c# k  q  ReleaseDC(Form1.hwnd,hdct)
, }6 }/ |- y3 `7 O  aa=InvalidateRect (Form1.hwnd,bottom,1)。
! g1 Z+ y( O& Z4 R& H  以上程序在VB6.中文版,Windwos 98 环境中运行通过。有兴趣的朋友可以去试一试,看到这种效果是不是觉得很惊奇呢!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Woexam.Com ( 湘ICP备18023104号 )

GMT+8, 2024-6-17 16:07 , Processed in 0.275777 second(s), 22 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表