怎样才能做成类似于flashget悬浮窗口那样的半透明窗口?

whupyf 武汉大学 2003-11-24 10:54:26
但是我想在其他模式(比如全屏的游戏或全屏的视频中)点击这个窗口,不返回正常显示模式?

或者.我希望直接往屏幕上画图.就像鼠标图像一样.

有这样的API吗?
...全文
71 点赞 收藏 22
写回复
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
whupyf 2003-12-16
我去看看
回复
flyingZFX 2003-12-10
解决之后告诉我一声呀,,,
交个朋友吧,,
我的MSN是
flying_ZFX@hotmail.com
回复
xiyixiaowm50 2003-12-09
《游戏开发概论》里好像也有,你可以看一下,保证你不后悔:)
回复
malingxian 2003-12-08
这是Win2K,WinXP,Win2003专用函数,98下呢?
回复
flyingZFX 2003-12-08
你的问题,解决了没有呀??
回复
mysticboymemory 2003-12-08
到 www.onlinedown.net 搜索一下 SuperRuntimeLibrary 他提供了这方面的好多函数。而且你无须任何API就可以完成所有工作。不过开发它的人好象不喜欢用WIN98,再说98中好象连微软都没有实现透明。在vb.net中做的透明窗体到了98中不是透明的。用用SRL吧。你会发现他是个不错的东东。
回复
whupyf 2003-12-05
我想做的东西很简单,
一个时钟,这个时钟不接收任何消息,在所有的窗口上面,不影响其他操作(包括无意中点中时钟窗口)
只是在系统托盘有一个图标,希望退出时就点图标.

关键是:不影响其他操作.这个很难实现.
回复
whupyf 2003-12-04
回去试试
回复
TimLee✿ 2003-12-01



MediaPlayer全屏时把自己设的总在最前了,FlashGet的浮动窗口也显示不了,除非~~

你用setwindowpos把MediaPlayer变成非最前,那么你的最前就可以显示了!

还有,Flashget在播放窗口上方就不是半透明了~
回复
Europa 2003-11-30
楼上的小心!如果你在全屏下使用这个函数作透明那看看你的内存消耗吧,除非你只想看到一个半透明的窗口就足以满足,否则你什么都别想做!
回复
whupyf 2003-11-29
Public Function DarkMe()
Dim rtn As Long
rtn = GetWindowLong(hWnd, GWL_EXSTYLE)......>>>>作用?
rtn = rtn Or WS_EX_LAYERED...................>>>>作用?
SetWindowLong hWnd, GWL_EXSTYLE, rtn........>>>>作用?
SetLayeredWindowAttributes hWnd, 0, 210, LWA_ALPHA
End Function
回复
flyingZFX 2003-11-26
不知道,,,问别人吧,,,
回复
whupyf 2003-11-26
我想问的不仅仅是把窗口变成半透明.并浮在所有窗口之上.

还有就是.要在media player全屏时.点击我的窗口.

不会影响media player的全屏播放..
回复
whupyf 2003-11-26
我令窗口保持在最上面。
可是当media player全屏时如果点击我的窗口,就会变回非全屏状态。
这个问题怎么解决?
.
.
.没人回答吗?

有人知道吗?
回复
flyingZFX 2003-11-25
你直接把上面的代码拷到你的窗体里就行了,,
SetLayeredWindowAttributes hWnd, 0, 210, LWA_ALPHA

这个函数有四个参数,其中第三个参数,也就是210那个位置,是控制透明度的,它的取值范围是从0到255的,取0时,完全透明,找不到了,取255时,不透明。
回复
flyingZFX 2003-11-25
呵呵,,试试吧,,,,应该没有问题的!!
回复
flyingZFX 2003-11-25
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

Private Declare Function SetLayeredWindowAttributes Lib "User32" (ByVal hWnd As Long, ByVal crKey As Long, ByVal bAlpha As Byte, ByVal dwFlags As Long) As Long

Const WS_EX_LAYERED = &H80000
Const GWL_EXSTYLE = (-20)
Const LWA_ALPHA = &H2
Const LWA_COLORKEY = &H1
''''''''''''''''''''''''''''''
Private Sub Form_Load()
DarkMe
End Sub
''''''''''''''''''''''''''''
Public Function DarkMe()
Dim rtn As Long
rtn = GetWindowLong(hWnd, GWL_EXSTYLE)
rtn = rtn Or WS_EX_LAYERED
SetWindowLong hWnd, GWL_EXSTYLE, rtn
SetLayeredWindowAttributes hWnd, 0, 210, LWA_ALPHA
End Function
回复
suntt 2003-11-25
http://www.21code.com/codebase/?pos=down&id=1761
回复
whupyf 2003-11-25
????
回复
flyingZFX 2003-11-25
呵呵~~~~
回复
发动态
发帖子
API
创建于2007-09-28

1455

社区成员

VB API
申请成为版主
社区公告
暂无公告