首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VB >

如何来判断一个窗口是否置顶?高手帮帮忙

2012-01-26 
怎么来判断一个窗口是否置顶??高手帮帮忙!VB codeOption ExplicitPrivate Declare Function GetWindowLong

怎么来判断一个窗口是否置顶??高手帮帮忙!

VB code
Option ExplicitPrivate Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal Hwnd As Long, ByVal nIndex As Long) As LongPrivate Const GWL_EXSTYLE = (-20)Private Const WS_EX_TOPMOST = &H8Function IsTopmost(Hwnd As Long) As Boolean '判断窗口置顶函数Dim Ret As Long, t1 As Long, t2 As LongRet = GetWindowLong(Hwnd, GWL_EXSTYLE)t1 = Ret Or WS_EX_TOPMOSTIsTopmost = (Ret = t1)End Function


上面的代码,我把它放到一个模块里,在窗中调用,

aa=IIf(IsTopmost(Val(Text1.Text)), "窗口置顶", "窗口不置顶")

Option Explicit 这一句注释掉的话,
aa 就总 "窗口置顶"

否则

 aa 总是 "窗口不置顶"

不知道是不是参数传错了??!!

GetWindowLong(Hwnd, GWL_EXSTYLE) 这个函数的参数到底要怎么传啊?

请高手帮忙,说一下上面的函数的正确用法!就用我上面的例子












[解决办法]
aa=IIf(IsTopmost(me.hwnd), "窗口置顶", "窗口不置顶") 

[解决办法]
hwnd是句柄,me.hwnd 就是指本窗口的句柄

要获得指定窗口的句柄用api : FindWindow
[解决办法]
代码是正确的。
Option Explicit 只会产生编译错误,引起执行差异只可能你其他的 API 调用搞坏了 VB 内存。
要从其他地方找错误。
[解决办法]
这一句 
t1 = Ret Or WS_EX_TOPMOST

应该是 与 关系吧

我不会弄VB
C/C++的代码
应该是这样的

t1 = Ret & WS_EX_TOPMOST;

我猜测VB的应该是这样的

t1 = Ret And WS_EX_TOPMOST

你试一下看看.

热点排行
Bad Request.