标题:高手赐招
只看楼主
xin9chen
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2008-4-23
 问题点数:0 回复次数:9 
高手赐招
1,如何控制VB窗体标题栏的颜色?
2,我建了一个MDI窗体,里面有一个子窗体,我想让子窗体出现时,为半透明形式。可以实现吗?如何实现?


[[it] 本帖最后由 xin9chen 于 2008-9-25 17:36 编辑 [/it]]
搜索更多相关主题的帖子: VB疑问 窗体 MDI 
2008-09-25 17:33
三断笛
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:31
帖 子:1621
专家分:1617
注 册:2007-5-24
得分:0 
1.
Private Declare Function GetSysColor Lib "user32" (ByVal nIndex As Long) As Long
Private Declare Function SetSysColors Lib "user32" (ByVal nChanges As Long, lpSysColor As Long, lpColorValues As Long) As Long
Dim GC1&, GC2&


Private Sub MDIForm_Load()
GC1 = GetSysColor(2)
 GC2 = GetSysColor(27)
SetSysColors 1, 2, RGB(Int(Rnd * 256), Int(Rnd * 256), Int(Rnd * 256))
End Sub

Private Sub MDIForm_Unload(Cancel As Integer)
 SetSysColors 1, 2, GC1
 SetSysColors 1, 27, GC2
End Sub



2.  
'标准模块
Public Declare Function SetLayeredWindowAttributes Lib "USER32" (ByVal hwnd As Long, ByVal crKey As Long, ByVal bAlpha As Byte, ByVal dwFlags As Long) As Long
Public Declare Function GetWindowLong Lib "USER32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
Public Declare Function SetWindowLong Lib "USER32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Public Const GWL_EXSTYLE = (-20)
Public Const WS_EX_LAYERED = &H80000
Public Const LWA_ALPHA = &H2
Public Sub TransparentForm(hwnd As Long, i As Integer)
    Dim Rtn As Long

    Rtn = GetWindowLong(hwnd, GWL_EXSTYLE) '注释:取的窗口原先的样式
    Rtn = Rtn Or WS_EX_LAYERED '注释:使窗体添加上新的样式WS_EX_LAYERED
    SetWindowLong hwnd, GWL_EXSTYLE, Rtn '注释:把新的样式赋给窗体

    SetLayeredWindowAttributes hwnd, 0, i, LWA_ALPHA
End Sub
'窗体中调用TransparentForm,参数hwnd为目标窗体句柄,i为透明度(1~255)
2008-09-25 21:11
allanwu244
Rank: 2
等 级:论坛游民
帖 子:134
专家分:20
注 册:2007-7-24
得分:0 
新手问题 学习中
请问:启动窗体是哪个
           谢谢
2008-09-25 22:16
multiple1902
Rank: 8Rank: 8
等 级:贵宾
威 望:42
帖 子:4881
专家分:671
注 册:2007-2-9
得分:0 
[bo][un]allanwu244[/un] 在 2008-9-25 22:16 的发言:[/bo]

请问:启动窗体是哪个
           谢谢

如果你手头窗体不超过几百个的话,建议你自己挨个试试……
2008-09-25 22:38
三断笛
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:31
帖 子:1621
专家分:1617
注 册:2007-5-24
得分:0 
回复 3# allanwu244 的帖子
第一个不用说吧

第二个你随便建个窗体,画个按钮,调用TransparentForm(me.hwnd,128)就OK
2008-09-26 06:20
xin9chen
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2008-4-23
得分:0 
回复 2# 三断笛 的帖子
对第一个问题,能不能详细点?特别是两个API函数的参数?
2008-09-26 18:12
我是菜鸟哦
Rank: 6Rank: 6
等 级:贵宾
威 望:22
帖 子:921
专家分:209
注 册:2007-5-4
得分:0 
学习了

偶是菜鸟鸟偶惧WHO?!!!!
2008-09-26 19:49
三断笛
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:31
帖 子:1621
专家分:1617
注 册:2007-5-24
得分:0 
Declare Function GetSysColor Lib "user32" Alias "GetSysColor" (ByVal nIndex As Long) As Long

判断指定windows显示对象的颜色
指定对象的RGB颜色

nIndex ---------  Long,一个常数,指出特定的windows显示对象,如下表
  Windows对象常数表
  常数定义
  Windows对象
  常数定义
  Windows对象
  COLOR_ACTIVEBORDER
  活动窗口的边框
  COLOR_ACTIVECAPTION
  活动窗口的标题
  COLOR_APPWORKSPACE
  MDI桌面的背景
  COLOR_BACKGROUND
  windows桌面
  COLOR_BTNFACE
  按钮
  COLOR_BTNHIGHLIGHT
  按钮的3D加亮区
  COLOR_BTNSHADOW
  按钮的3D阴影
  COLOR_BTNTEXT
  按钮文字
  COLOR_CAPTIONTEXT
  窗口标题中的文字
  COLOR_GRAYTEXT
  灰色文字;如使用了抖动技术则为零
  COLOR_HIGHLIGHT
  选定的项目背景
  COLOR_HIGHLIGHTTEXT
  选定的项目文字
  COLOR_INACTIVEBORDER
  不活动窗口的边框
  COLOR_INACTIVECAPTION
  不活动窗口的标题
  COLOR_INACTIVECAPTIONTEXT
  不活动窗口的文字
  COLOR_MENU
  菜单
  COLOR_MENUTEXT
  菜单正文
  COLOR_SCROLLBAR
  滚动条
  COLOR_WINDOW
  窗口背景
  COLOR_WINDOWFRAME
  窗框
  COLOR_WINDOWTEXT
  窗口正文
  COLOR_3DDKSHADOW
  3D深阴影 *
  COLOR_3DFACE
  3D阴影化对象的正面颜色 *
  COLOR_3DHILIGHT
  3D加亮颜色(win95)
  COLOR_3DLIGHT
  3D阴影化对象的浅色 *
  COLOR_INFOBK
  工具提示的背景色 *
  COLOR_INFOTEXT
  工具提示的文本色 *
  *:带 * 号的常数未获NT 3.51的支持

Declare Function SetSysColors Lib "user32" Alias "SetSysColors" (ByVal nChanges As Long, lpSysColor As Long, lpColorValues As Long) As Long
设置指定窗口显示对象的颜色

nChanges -------  Long,欲改变的对象的数量

  lpSysColor -----  Long,按引用传递。这是一个整数数组(总共包含nChanges个元素)的第一个元素。每个条目都包含了一个常数,指定一个windows显示对象。参考GetSysColor函数

  lpColorValues --  Long,按引用传递。这是RGB值数组的第一个元素;该数组用于设置lpSysColor数组中的对象颜色
2008-09-26 20:56
xin9chen
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2008-4-23
得分:0 
还要请教
1,对于第一个问题,我按你的代码调试,可是还是不行啊?!我的本意是:让标题栏的颜色,在窗体处于不活动时,不改变!
2,对于第二个问题,加上你的模块,在子窗体中加上如下代码:
   Private Sub Form_Load()
   Call TransparentForm(Me.hwnd, 100)
   End Sub
   可是,子窗体还是没有半透明效果啊?
2008-09-27 13:31
三断笛
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:31
帖 子:1621
专家分:1617
注 册:2007-5-24
得分:0 
1.那你把代码放active事件和deactive事件里去啊......
2.不是要你画个按钮么?
2008-09-27 14:06



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-235159-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.135567 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved