看流星社区

 找回密码
 注册账号
查看: 2830|回复: 4

[VB] 关于SetWindowPos函数

[复制链接]

该用户从未签到

发表于 2011-4-5 10:34:58 | 显示全部楼层 |阅读模式

下面一段代码是用复选框使窗口置顶的。有些问题想问问大家。
引用
Const HWND_TOPMOST = -1
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 Sub Check1_Click()
Dim lngWindowFront As Long
If Check1.Value = 1 Then '窗口置前
lngWindowFront = SetWindowPos(Me.hwnd, HWND_TOPMOST, 0, 0, 0, 0, 3)
If lngWindowFront = 0 Then
MsgBox "设置失败!", vbInformation, "友情提示"
Else
MsgBox "设置成功!", vbInformation, "友情提示"
End If
Else
lngWindowFront = SetWindowPos(Me.hwnd, -2, 0, 0, 0, 0, 3)
If lngWindowFront = 0 Then
MsgBox "设置失败!", vbInformation, "友情提示"
Else
MsgBox "设置成功!", vbInformation, "友情提示"
End If
End If
End Sub

引用
Const HWND_TOPMOST = -1

为什么要在这里声明常量HWND_TOPMOST = -1呢?
它不是hWndInsertAfter中的值吗?

引用
lngWindowFront = SetWindowPos(Me.hwnd, -2, 0, 0, 0, 0, 3)

而这个-2又代表了什么?
引用
引用第1楼geriald于2008-04-14 17:01发表的  :
HWND_TOPMOST = -1
设置当前窗体处于最上层,HWND_TOPMOST窗体只能设置一个
-2也是设置窗体


我是说这个-1跟-2是固定的,但为什么呢?
在书上没见到给这些参数赋值呀,这值不是随便赋的吧。


该用户从未签到

发表于 2011-4-5 10:35:15 | 显示全部楼层
HWND_TOPMOST = -1
设置当前窗体处于最上层,HWND_TOPMOST窗体只能设置一个
-2也是设置窗体

该用户从未签到

发表于 2011-4-5 10:35:24 | 显示全部楼层
再提个建议,可以把
If lngWindowFront = 0 Then
  MsgBox "设置失败!", vbInformation, "友情提示"
Else
  MsgBox "设置成功!", vbInformation, "友情提示"
End If
写到最后,程序要错落有至。

该用户从未签到

发表于 2011-4-5 10:35:33 | 显示全部楼层
-1,-2就是参数

-1 表示 当前句柄的窗台在最前

-2就表示取消最前

建议多看看MSDN

该用户从未签到

发表于 2011-4-5 10:35:47 | 显示全部楼层
常量,只是为了便于记忆而产生的
对于一个常量而言,他里面的值是相对固定的,
所以,你调用时,可以写常量,也可以直接写常量里的值,都是一样的效果

程序执行时,如果你是写的常量,他也会把常量的值带进来调用。
点击按钮快速添加回复内容: 支持 高兴 激动 给力 加油 苦寻 生气 回帖 路过 感恩
您需要登录后才可以回帖 登录 | 注册账号

本版积分规则

小黑屋|手机版|Archiver|看流星社区 |网站地图

GMT+8, 2024-4-19 23:29

Powered by Kanliuxing X3.4

© 2010-2019 kanliuxing.com

快速回复 返回顶部 返回列表