CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VB >  基础类

如何做透明窗体?谢

楼主ccto(大水壶)2002-01-25 16:28:13 在 VB / 基础类 提问

如何做透明窗体?谢 问题点数:45、回复次数:11Top

1 楼lily0000000(heaven)回复于 2002-01-25 16:28:58 得分 15

如   何   使   窗   口   透   明            
   
  为   了   便   于   观   察,   先   在   窗   口   上   添   加   两   个   按   钮,   Command1和   Command2。   加   上   如   下   代   码   :  
          Private   Sub   Command1_Click()  
          Print   "Hello"  
          End   Sub  
           
          Private   Sub   Command2_Click()  
          End  
          End   Sub  
          这   两   个   按   钮   一   个   用   于   终   止   程   序   运   行   ,   一   个   用   于   显   示   文   字   。  
          然   后   ,   将   Form的   Border设   为   None。  
          最   后   ,   在   Form的   声   明   部   分   加   上   以   下   代   码   :  
          Private   Declare   Function   SetWindowLong   Lib   "user32"   Alias   _  
          "SetWindowLongA"   (ByVal   hwnd   As   Long,   ByVal   nIndex   As   Long,   _  
          ByVal   dwNewLong   As   Long)   As   Long  
          Private   Declare   Function   SetParent   Lib   "user32"   (ByVal   hWndChild   _  
          As   Long,   ByVal   hWndNewParent   As   Long)   As   Long  
          Const   WS_EX_TRANSPARENT   =   &H20&  
          Const   GWL_EXSTYLE   =   (-20)  
          最   后   ,   在   Form中   加   上   如   下   代   码   。  
          Private   Sub   Form_Load()  
          SetWindowLong   hwnd,   GWL_EXSTYLE,   WS_EX_TRANSPARENT  
          End   Sub    
  Top

2 楼uguess(天地间,有我在行走!)回复于 2002-01-25 16:30:04 得分 15

 
  制造出透明的Form  
   
  来源:cww  
   
  说实在的我不知道这所谓透明的Form用在什麽地方,它变成透明後,只要有所移动,  
  或Mouse移到TitleBae处时,结果总是令人感到莫名奇妙,所以我设定BorderStyle   =   0  
  ,令之没有TitleBar。网路上见许多人问起,故有这程式;若有人知道这是用在何处,  
  请告诉我。  
   
  後来我在一个不小心,发现另一种作法令Form变透明的方式,而且比目前的作法好用  
  请叁考透明的Form上显示背景透通图  
   
  可以用SetWindowLong(hwnd,   GWL_EXSTYLE,   WS_EX_TRANSPARENT)来完成  
   
  'form上有Command1,   command2两个Button并事先设定form之BorderStyle   =   0  
   
  Option   Explicit  
  Private   Declare   Function   GetWindowLong   Lib   "user32"   Alias   "GetWindowLongA"   (ByVal   hwnd   As   Long,   ByVal   nIndex   As   Long)   As   Long  
  Private   Declare   Function   SetWindowLong   Lib   "user32"   Alias   "SetWindowLongA"   (ByVal   hwnd   As   Long,   ByVal   nIndex   As   Long,   ByVal   dwNewLong   As   Long)   As   Long  
  Const   GWL_EXSTYLE   =   (-20)  
  Const   WS_EX_TRANSPARENT   =   &H20&  
  Private   PreValue   As   Long  
   
  Private   Sub   Command2_Click()   '还原变成不透明  
  Call   SetWindowLong(Me.hwnd,   GWL_EXSTYLE,   PreValue)  
  Me.Hide  
  Me.Show  
  End   Sub  
   
  Private   Sub   Form_Load()  
  Dim   i   As   Long  
   
  i   =   GetWindowLong(Me.hwnd,   GWL_EXSTYLE)  
  '变成透明的Form  
  PreValue   =   SetWindowLong(Me.hwnd,   GWL_EXSTYLE,   i   Or   WS_EX_TRANSPARENT)  
  Me.Show  
  DoEvents  
  Command1.Refresh   '令Command1可见  
  Command2.Refresh   '令Command2可见  
  End   SubTop

3 楼dbcontrols(泰山__抛砖引玉)回复于 2002-01-25 16:32:58 得分 15

Private   Declare   Function   CreateCompatibleBitmap   Lib   "gdi32"   (ByVal   hdc   As   Long,   ByVal   nWidth   As   Long,   ByVal   nHeight   As   Long)   As   Long  
  Private   Declare   Function   SelectObject   Lib   "gdi32"   (ByVal   hdc   As   Long,   ByVal   hObject   As   Long)   As   Long  
   
  Private   Sub   Form_Load()  
  Me.AutoRedraw   =   True  
          hBitmap   =   CreateCompatibleBitmap(Me.hdc,   0,   0)  
          SelectObject   Me.hdc,   hBitmap  
          Me.Refresh  
  End   Sub  
  Top

4 楼ccto(大水壶)回复于 2002-01-25 17:11:04 得分 0

这样做出的窗体可否响应鼠标事件?为什么Form_Click事件没响应,应如何做?Top

5 楼ccto(大水壶)回复于 2002-01-25 21:48:53 得分 0

?  
  Top

6 楼Bardo(巴顿(永远只有一个))回复于 2002-01-25 21:56:18 得分 0

再用透明标签!  
  Top

7 楼minglx(我会给你分)回复于 2002-01-25 22:10:16 得分 0

请问一下半透明的呢Top

8 楼zyl910(编程的乐趣在于编程控制硬件,与用图形学实现绚丽效果)回复于 2002-01-25 22:19:18 得分 0

http://www.dapha.net/soure/form/Transparent%20Buttons%20(UPDATED).zip  
  93KB  
  透明按钮,带有光晕.  
  Top

9 楼estrella(笨)回复于 2002-01-25 22:37:09 得分 0

关注  
  Top

10 楼wjying(葡萄)回复于 2002-01-26 03:06:44 得分 0

xueTop

11 楼ccto(大水壶)回复于 2002-02-17 13:13:22 得分 0

不解?Top

相关问题

  • 如何让窗体"透明"
  • 如何制作透明窗体
  • 如何制作透明窗体?
  • 如何制作半透明的窗体?
  • 窗体如何透明并移动?
  • 如何使窗体背景透明
  • 如何使窗体半透明
  • 如何做半透明窗体??
  • 如何建立透明窗体
  • 如何实现窗体透明效果?

关键词

  • ws
  • me
  • 透明
  • exstyle
  • gwl
  • setwindowlong
  • transparent
  • byval
  • hwnd
  • nindex

得分解答快速导航

  • 帖主:ccto
  • lily0000000
  • uguess
  • dbcontrols

相关链接

  • Visual Basic类图书
  • Visual Basic类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo