a我考网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 62|回复: 0

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

[复制链接]
发表于 2012-7-31 22:10:12 | 显示全部楼层 |阅读模式
  使用过Windows 9x的用户都应该知道,在关闭Windows系统时,整个屏幕会暗下来,那么,如何在自己开发的应用程序中也实现这一效果呢?我们通过调用一组API函数就可以实现,如果你有兴趣,就跟我来吧!这一组函数是:" b: v" Z# N/ t# g0 d) d/ R  `
  GetDC :用来获取屏幕的设备号;
  V" Y3 G3 c/ P# c  ReleaseDC :释放指定的设备;
' w, O7 B/ Z# W1 J* H  CreatePatternBrush :创建图形刷子;1 |, ^! k$ x% T, `) a
  PatBlt: 利用创建的图形刷子填充指定设备;7 p' {! w- P1 J& X
  DeleteObject :删除创建的对象(与CreatePatternBrush创建的刷子对象呼应);$ n3 S" E- q( Y
  CreateBitmap :创建BMP对象;
) V7 Z, h6 ]9 E9 B( b' V# F, q8 j  SelectObject :选择当前操作对象;  i# T- B" L9 A2 g$ `+ d. e: i
  InvalidateRect :使操作无效,即恢复变暗前的状态。
' e5 i$ B; }. K: y  基本思路% f: Q# n3 M! m4 G# Z; c& ]
  首先创建一个位图对象,然后,利用此位图对象创建一个图案刷子,选择指定设备为当前设备,利用已经创建的图案刷子填充当前设备,删除创建的刷子对象即可使当前设备变暗。调用InvalidateRect函数就可使指定设备恢复到变暗前的状态。, G' F, x; k" n# W* j
  步 骤) l0 X9 p0 d2 ]; w
  1、创建一个Form1窗体,设置2个Command按钮,将Command1和Command2的Caption属性分别设置为:“变暗”和“恢复”。0 D9 w) A' N( _8 c2 }& z
  2、在窗体代码模块中声明API函数和相应的类型,代码如下:) G' z/ r" t; z  |/ v5 I  d5 q2 h
  Private Type RECT
; t% }/ q) b8 P( u5 T0 x+ x0 \! b  Left As Long/ a: d7 }- n* v' b+ B- K
  Top As Long
: B. x9 [* v; p" {, Q5 ], Z  Right As Long2 T; W9 R3 r0 e- i6 L, o" X* T( T
  Bottom As Long
( t1 [9 \; P7 P$ d, ?- a  End Type' ^4 V) ?, a7 X* o5 b
  Private Declare Function GetDC Lib "user32" (ByVal hwnd As Long) As Long
3 p0 _0 a4 R' `. y  Private Declare Function ReleaseDC Lib "user32" (ByVal hwnd As Long, ByVal hdc As Long) As Long
. D/ t# f8 K+ C. U, S  Private Declare Function CreatePatternBrush Lib "gdi32" (ByVal hBitmap As Long) As Long
& w; r1 U+ y7 y: Q  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& G( z2 _# a! W8 _+ ?% Z
  Private Declare Function DeleteObject Lib "gdi32" (ByVal hObject As Long) As Long/ n3 ^4 t% {7 t+ m: Z  i4 v" l4 p
  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/ Z3 Y) C3 {5 n9 i: U8 W
  Private Declare Function SelectObject Lib "gdi32" (ByVal hdc As Long, ByVal hObject As Long) As Long% v4 j+ u9 i! s
  Private Declare Function InvalidateRect Lib "user32" (ByVal hwnd As Long, lpRect As RECT, ByVal bErase As Long) As Long
4 ^( Z& j/ N% M8 m  3、编写代码实现程序功能,由于版面所限,具体代码将放到CCE网站(http://www.cce.com.cn)。  h4 P* q( n5 E7 i1 B
  以上就是屏幕变暗的方法。如果要使窗体、图片框等对象变暗,只要使窗体或图片框等对象获取句柄即可,修改Command1_Click过程和Command2_Click过程中的以下语句即可实现窗体变暗。
" z8 N1 E3 P' [+ w. Q  hdc5=Form1.Hdc;4 b: T' v' a" ?" m8 D% M3 R
  Width5=Form1.width;& K% y8 K" r# R( g1 y) H  R
  height5=Form1.height;
& @' K, W! C- k; O1 d9 O# X  ReleaseDC(Form1.hwnd,hdct)
& F3 @3 D0 @0 x% q  aa=InvalidateRect (Form1.hwnd,bottom,1)。2 O2 S8 f+ C6 U" m- ^' Q! ?; K
  以上程序在VB6.中文版,Windwos 98 环境中运行通过。有兴趣的朋友可以去试一试,看到这种效果是不是觉得很惊奇呢!
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-6-26 18:09 , Processed in 0.230899 second(s), 21 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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