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

怎么来判断一个窗口是否置顶??高手帮帮忙!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

你试一下看看.