vb的api函数SetWindowPos 中的问题

来源:百度知道 编辑:UC知道 时间:2024/05/09 08:57:04
这是API函数中的窗口前置的代码:
Private Declare Function SetWindowPos Lib "user32" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal x As Long, ByVal y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long
Private Const HWND_TOPMOST& = -1
Private Const SWP_NOSIZE& = &H1
Private Const SWP_NOMOVE& = &H2
Private Sub Form_Load()
SetWindowPos Form1.hwnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE Or SWP_NOSIZE
End Sub

上面的代码当中,有多数地方不明白:
为什么这里要定义HWND_TOPMOST的值为 -1 ? 查找了好多的资料都没有关于空这个-1的说明,如果我定义为-2呢?-3呢?或者是-99呢?这样程序运行的结果又是怎样的?真的找了好多的资料都没有这个-1参数的说明 T_T

还有SWP_NOSIZE,这里为什么要定义一个16进制的数呢? 请高手出来说明一下,已经困扰好久了,谢谢!
我知道定义HWND_TOPMOST的值为-1是将窗口置于列表的顶部,并位于任何窗口的前面,可是为什么要定义的数是-1呢?我定义为-2不行吗?定义为-99,或者定义为-11111不行吗?我已经找了好多资料,都没有这个-1的说明...请高手详细说明一下,谢谢了

你能用该函数把窗口放在最顶层是因为传了"-1"这个参数进去.
而不是因为他叫"HWND_TOPMOST"

明白了吗

不管是10进制还是16进制.这些都是些常量.不用去管.就像圆周率=3.14,你总不可能把圆周率定义成-1,-2,-99吧.

你说的那个-1也肯定是有意义的.不过到底是什么意义.估计只有系统才能够识别出来.就像系统认定圆周率=3.14