说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

用VB实现“ICQ”式的启动欢迎画面

HTML文档下载 WORD文档下载 PDF文档下载
用VB实现“ICQ”式的启动欢迎画面


广西 高 罡
  第一次运行,或通过运行程序的方式来启动ICQ时,随着一声火车的长鸣,我们都能看到一朵背景为透空的大花,这就是ICQ独特的欢迎画面!通常,我们都是用一整个带图形及文字的窗体来做为欢迎画面的。我们要如何去做才能实现类ICQ的欢迎画面呢?这看起来像是件十分复杂的工作,其实,利用了强大的API函数,事情就会变得非常的简单。出于简单化的考虑,我使用VB6.0简体中文企业版来完成这一例程。
  首先要准备好做为欢迎画面所需要的图片,然后对图片进行简单的处理,把需要透空的地方填上纯白色(255,255,255),然后保存为*.bmp文件,这用PhotoShop可以很容易地实现。需要注意的是,图片必须为“索引色”模式,如果不是就需用PhotoShop来修改,否则不能实现透空效果。
  先建立一个标准EXE工程,在窗体上文稿放置一个Picture控件,控件名为Picture1,和一个Timer控件,控件名为Timer1,Interval属性设置为2000。
  原程序如下:

  Option Explicit
  '定义获取桌面HDC的api函数
  Private Declare Function GetDC Lib "user32" (ByVal hwnd As Long) As Long
  '定义TransparentBlt函数
  '实现图片的透空效果需要用上API函数:TransparentBlt,这个函数功能十分强大,而且使用方便,但不幸的
  '是VB自带的API浏览器居然把它的漏掉了,所以我们只有采用人工输入的方法了
  Private Declare Function TransparentBlt Lib "msimg32.dll" _
   (ByVal hdcDest As Long, _
   ByVal nXOriginDest As Long, _
   ByVal nYOriginDest As Long, _
   ByVal nWidthDest As Long, _
   ByVal nHeightDest As Long, _
   ByVal hdcSrc As Long, _
   ByVal nXOriginSrc As Long, _
   ByVal nYOriginSrc As Long, _
   ByVal nWidthSrc As Long, _
   ByVal nHeightSrc As Long, _
   ByVal crTransparent As Long) As Long
  '其中,hdcDest为目标地的HDC,nXOriginDEst和nYoriginDest分别为目标图像的起始点坐标,nWidthDesk和nHeightDest分别为目标图像的宽度和高度。与之相应的hdcSrc、nXOriginSrc、nyOriginSrc、nWidthSrc、nHeightSrc分别为原图的HDC、原图的起始X、Y坐标、原图和宽度和长度,crTransparent为需要设置成透空的颜色的RGB值。
  '定义用于恢复桌面的函数
  Private Declare Function InvalidateRectAsAny Lib "user32" Alias _
    "InvalidateRect" (ByVal hwnd As Long, lpRect As Any, _
    ByVal bErase As Long) As Long

  Private Sub Form_Load()
   Me.Hide
   Dim Pic As Long
   Dim w As Long
   Dim h As Long
   Dim x As Long
   Dim sx, sy
  Picture1.AutoRedraw = True
  '获取桌面的HDC
  x = GetDC(0)
  '计算桌面的宽度和高度
   sx = Screen.Width \ Screen.TwipsPerPixelX
   sy = Screen.Height \ Screen.TwipsPerPixelY
  '计算图像的宽度和高度
  w = Picture1.ScaleX(Picture1.Picture.Width, 8, vbPixels)
  h = Picture1.ScaleY(Picture1.Picture.Height, 8, vbPixels)
  
  picture1.picture=loadpicture("图像文件的完整文件名称")
  
  '使透空的图像显示在桌面的中央
   Pic = TransparentBlt(x, _
   sx / 2 - w / 2, _
   sy / 2 - h / 2, _
   w, _
   h, _
   Picture1.hDC, _
   0, _
   0, _
   w, _
   h, _
   RGB(255, 255, 255))
  End Sub
  Private Sub Timer1_Timer()
  '两秒钟后恢复桌面
  InvalidateRectAsAny 0, ByVal 0&, True
  Load 自制程序的主窗体名
  Timer1.Enabled = False
  End Sub
  需要注意的是程序完成后如果直接在VB环境下运行有可能会出现透空图像一闪而过的现象,这并不是你的错,只要把程序编译成*.exe的文件后运行一切都会正常的。

VB如何使键盘、Mouse失效(JournalPlayBack Hook) VB如何使用 DBGrid VB如何突破 TextBox 32K 的限制? VB如何为执行程序加上参数? VB如何压缩较长的全路径文件名中的路径 (Path) 字串长度? VB如何在VB中实现密码的读取 如何在VB中使用命令行参数 VB如何在内存中的指定位置取数据? VB如何在已经存在的文本的textbox添加新的一行 VB如何在資料庫中存入單引號? VB如何正确使用VB6访问Access2000数据库 VB如何自动记录计算机开机时间? VB如何做到当我们单击窗体的最小化和关闭按钮时,窗体先最小化到任务栏成为按钮,然后消失呢?金山词霸能 软件工程篇-Const与#Const的对比 -VB资料 软件工程篇-从Visual Data Manager开始 -VB资料 软件工程篇-理解错误处理代理 -VB资料 软件工程篇-清空集合内容的几种方法 -VB资料 软件工程篇-受限制的共享软件Shareware -VB资料 设定CapsLock ScrollLock NumLock-VB资料 设置计算机名称-VB资料 深入SERIPTING RUNTIME LIBRARY-VB资料 '识别常数的简单四则运算-VB资料 实现平面工具栏 -VB资料 使程序不在 Ctrl+Alt+Del 弹出的对话框内-VB资料 VB使用 API 开始屏幕保护 VB使用rdoPreparedStatement实现参数化查询 使用Vb5制作Easter Egg 使用VB实现所见即所得功能 使用VB中的SERIPTING RUNTIME LIBRARY VB使用Win95的动画光标 VB使用Windows内建的图标 完了,完了,我彻底完蛋了! 我从网上下载的*.bin文件的电影怎么播放? 考水平考试的朋友请过来看。 刚收到111222的信~~~难过~~~我会想念他的~~~你们是不是也会~~~ 我的硬盘为何这样!help!! 考水平考试的朋友过来看看 我要毕业啊 ===============想知道111222去向的朋友,看这(独家披漏)===================== 以下SQL语言如何写? 111222走了~~送分~~~心里不好受~~~ 111222真的走了~~~~~~~~~~~ JBuilder中用MYSQL数据库,用中文进行条件查询时,查不出任和数据? ASM 菜鸟问题,请大家帮忙!谢谢 解释一下好了吗? ============答对我的问题者,将可获得111222的签名照片!!!!!!!!=========== 关于图片的上传 ======== 绝对好消息,activereport2.0已经release 了,cracker们出动啊~~~~~加油 ============= 关于什么才是真正的系统分析和系统分析员的讨论!——欢迎大家参加,进行善意地讨论!^&^ 今晚的球赛什么时候开始啊? 哪里有关于水平考试(高程)的模拟题的啊??? 为什麽还是不能显示中文呢? 怎样获取WIN2000的密码 在父窗体怎样画jpg格式的背景图? 如何注册MSComm控件????????? 如何解决这个问题啊?重赏啊!!!! 公告: 从现在开始封shines 111222 :)流芳斑主,结贴的工作要开始了,会很累啊!我代表大家先谢谢你了! 怎样改变MSHflexgrid中每条记录的背景颜色。急急急急急急急 各位,能不能给我讲一下“句柄”是怎么一回事? 唉,心情不爽 关于C++语法的问题? 灌水-----大学时的恶作剧(转载) "setdibs()"是什么来着,请指教,谢谢! 写注释不宜过头 这段代码错在哪里? 请大家预测一下比分(参与者都有分)开赛后就不算了,还有半个小时,赶紧着 写网络电话程序的讨论 最后一帖,贴完睡觉----如何在电梯里捣乱 怎样定制一个在程序中重用的组件?只能通过包方式吗? 寻寻觅觅 汉英计算机科技文章 互译!!有劳各位朋友费心帮忙找找 我靠!真TMD不爽,这个时候准老婆的老妈进了医院! 怎样调用*.db格式文件 谁知道哪儿有英汉互译,急急急急!!!! ISO 9001认证 VS CMM2 谁知道哪儿有《神秘的人月》下载? 为111222求情 怎样可以修改浏览器的标题? 怎样可以修改浏览器的标题1? 哪位能给我一个source insight 3.0的sn号? 怎样可以修改浏览器的标题2? 如何异步调用远程组件的方法? 求方程|x|+2|y|=0的解 解方程:75%x×2+3x打漏了一些东西:75%x×2+3x=90 (X-2500)*[8+(2900-X)/50*4]=5000 方程(x-1)2-(x+1)(x-1)+3(x+1)=0的解是 x+【X+1】+【X+2】+...【X+10-1】=75怎么解方程 解方程(4* (2900-X) / 50 +8 )(X-2500)=5000 2个x的方程怎解解答 x—x÷10=7.74 解方程 (x-2500)(50分之x-2900乘以4+8)=5000 (x+1)^2+x-2=1这道方程怎么解啊!其实原题目是:x+1 1----- + ----- =1x-2 x+1 75加10%x减15%x等于74 (2900-x-2500)(8+4x/50)=5000怎么算 X*X=108+3*X怎么解呀X*X=108+3*X, 75+百分之十X-百分之十五X=74 这个方程怎么解?250X=200*(6.75-X) X+10+X+8=108怎么解 75%X➖10=2 这个解方程怎么算啊75%X➖10=2这个解方程怎么算啊 250X=200(6.75-X)怎么解,详细点,谢谢 (108-x)/x=12.5% 怎么解 X减百分之15X等于68 解方程 x÷250+x÷200=6.75这个方程怎么解, 9(X-3.8)=108怎么解? 1.已知关于x的方程4x+2=-6的解比关于x的方程4x-2a=10的解小3,求关于x的方程4ax+5=-1的解.2.一个两位数,十位数与个位数之和是14,如果把十位数与个位数数字对调,得到的两位数比原数大36,则这个两 X/250+X/200=6.75 这题方程具体怎么解 7.6x-3.2=4x-1.76 方程解 方程x(4x+6)=9 方程(1-x-3)(x+1)=-6 这类方程怎么解?有什么技巧?陈出来后又有x又有x²,实在是求不出!感激不尽 方程8分之1x-4分之1=2分之1的解是() 10(29/60-x)=18(25/60-x)这个方程怎么解? 50%*x=40%*(x+20)这个方程怎么解?过程. 怎么解x-(6/1x-30)=8/7x这个方程怎样解 (X-15)*2/3-(X-15)/3=10 怎么解这个方程? 1/3(x+50)=40%x,这个方程怎么解 x-4/1x=(150-x)-30 这个方程怎么解?是四分之一!不是一分之四! 60%x+14=18 这个方程怎样解? 帮我解个方程:60×(X--1)=50×(X+0.2) x+4分之1x=30怎么解这个方程? 60-x+18=53的方程怎么解 50 ÷x =10 方程式 20分之1x加30分之1x=1求方程怎么解? 4×(10X+7)=700000+X 这个方程怎么解啊?一步也别省略! 18与X的15倍的和是63.用方程解. 3x+2.5(68-x)=180,3x+2(68-x)=180,2.5x+2.5(68-x)=180,这三道方程怎么解 4.8x-x=0.76方程式怎么解? 已卖出10盆花,没盆15元,又卖出x盆同样的花,共收入270元(列方程并求出方程的解) X-0.6=0.48的方程式怎么解X-0.6X=0.48的方程式怎么解 8x-108=28 解方程式 (100%-40%)X + 90 = 15% X 这个方程怎么解 42=0.5*6*(6*x)怎么解这个方程 8x-108=208 解方程式 x+3=15怎么解?要方程! 方程x^2-|x|-6=0的解是 方程x(x-2)+x-2=0的解是? 解方程:x/60 +2=x/45 解一下方程;2(x+0.6)=3(x-0.1) 方程x^2-|x|-1=0的解是? (X-45)*60% =45 + (X-45)*40% 怎么解方程 (18+x)/(48+x)=40%这个方程的过程怎么求? 求方程x^2-2^x=0的解?谁会? 60%-40%x=45解方程 求解方程:200(x-15)=200*5+80(x-5) 要有过程 谢谢
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn