ExcelTip.Net留存知识帖 ---【注:附件之前被网盘供应商清空后,现已修复-现已修复-现已修复为本地下载!】
现在位置:首页 > E问E答 > Excel VBA > 如何设置窗体为半透明?

如何设置窗体为半透明?

作者:绿色风 分类: 时间:2022-08-17 浏览:100
楼主
wise
Q:如何设置窗体为半透明?
A:ALT+F11→插入模块→输入以下代码:

  1. Private Declare Function GetActiveWindow Lib "USER32" () As Long
  2. '获得当前活动窗口的窗口句柄
  3. Private Declare Function SetWindowLong Lib "USER32" Alias "SetWindowLongA" (ByVal hWnd As Long, ByVal lngWinIdx As Long, ByVal dwNewLong As Long) As Long
  4. '改变指定窗口的属性
  5. Private Declare Function GetWindowLong Lib "USER32" Alias "GetWindowLongA" (ByVal hWnd As Long, ByVal lngWinIdx As Long) As Long
  6. '获得有关指定窗口的信息
  7. Private Declare Function SetLayeredWindowAttributes Lib "USER32" (ByVal hWnd As Long, ByVal crKey As Integer, ByVal bAlpha As Integer, ByVal dwFlags As Long) As Long
  8.   'hWnd是透明窗体的句柄
  9.   'crKey为掩码的颜色,可以用RGB(r,g,b)来指定
  10.   'bAlpha是不透明度,取值范围是(0,255),其中0代表全透明,255代表不透明
  11.   'dwFlags是透明方式,可以取两个值:
  12.   '当取值为LWA_ALPHA时,crKey参数无效,bAlpha参数有效;
  13.   '当取值为LWA_COLORKEY时,窗体中的所有颜色为crKey的地方将变为透明,bAlpha参数无效。
  14.   'LWA_ALPHA = 0x2
  15.   'LWA_COLORKEY=0x1
  16.   '也可以取两个值的组合:LWA_ALPHA Or LWA_COLORKEY。这样crKey的地方将变为全透明,而其它地方根据bAlpha参数确定透明度。

  17. Private Sub UserForm_Click()
  18. Const level = 50 '(设置范围为 0-100)
  19.     Dim hwd As Long
  20.     hWnd = GetActiveWindow
  21.     SetWindowLong hWnd, &HFFEC, GetWindowLong(hWnd, &HFFEC) Or &H80000
  22.     SetLayeredWindowAttributes hWnd, 0, (255 * level) / 100, &H2
  23.     Me.Caption = "窗体透明度:" & (100 - level) & "%"
  24. End Sub



窗体透明.rar
2楼
战神一啸
NB!
3楼
dongzhong
真的是高手呀!
顶一个,见识了
4楼
box217
支持~学习了··谢谢了· ·







额·貌似错误,  Me~
5楼
水星钓鱼
学习

免责声明

有感于原ExcelTip.Net留存知识的价值及部分知识具有的时间限定性因素, 经与ExcelTip.Net站长Apolloh商议并征得其同意, 现将原属ExcelTip.Net的知识帖采集资料于本站点进行展示, 供有需要的人士查询使用,也慰缅曾经的论坛时代。 所示各个帖子的原作者如对版权有异议, 可与本人沟通提出,或于本站点留言,我们会尽快处理。 在此,感谢ExcelTip.Net站长Apolloh的支持,感谢本站点所有人**绿色风(QQ:79664738)**的支持与奉献,特此鸣谢!
------本人网名**KevinChengCW(QQ:1210618015)**原ExcelTip.Net总版主之一

评论列表
sitemap