调用API的SetWindowsPos函数出错!

unser 2003-05-19 03:38:45
为什么我调用API的SetWindowsPos函数,无法使窗口总在最前面
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 Form_Load()
SetWindowPos Me.hwnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE Or SWP_NOSIZE
Or SWP_SHOWWINDOW
End Sub
...全文
87 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
since1990 2003-08-03
  • 打赏
  • 举报
回复
帮你up
lihonggen0 2003-05-19
  • 打赏
  • 举报
回复
Const HWND_TOPMOST = -1
Const HWND_NOTOPMOST = -2
Const SWP_NOSIZE = &H1
Const SWP_NOMOVE = &H2
Const SWP_NOACTIVATE = &H10
Const SWP_SHOWWINDOW = &H40
Private Declare Sub 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)

Private Sub Form_Activate()

'Set the window position to topmost
SetWindowPos Me.hWnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOACTIVATE Or SWP_SHOWWINDOW Or SWP_NOMOVE Or SWP_NOSIZE
End Sub
fraser01 2003-05-19
  • 打赏
  • 举报
回复
同时,X,Y,CX,CY的值是表示你窗口的位置和高度、宽度的,所以不能全部为零,
要设一个值。你可参考如下:
SetWindowPos Me.hwnd, HWND_TOPMOST, 0, 0, 50, 100, SWP_NOMOVE Or SWP_NOSIZE
Or SWP_SHOWWINDOW

fraser01 2003-05-19
  • 打赏
  • 举报
回复
请在你的模块内设置如下常量:
Public Const HWND_BOTTOM = 1
Public Const HWND_BROADCAST = &HFFFF&
Public Const HWND_DESKTOP = 0
Public Const HWND_NOTOPMOST = -2
Public Const HWND_TOP = 0
Public Const HWND_TOPMOST = -1
Public Const SWP_DRAWFRAME = SWP_FRAMECHANGED
Public Const SWP_FRAMECHANGED = &H20 ' The frame changed: send WM_NCCALCSIZE
Public Const SWP_HIDEWINDOW = &H80
Public Const SWP_NOACTIVATE = &H10
Public Const SWP_NOCOPYBITS = &H100
Public Const SWP_NOMOVE = &H2
Public Const SWP_NOOWNERZORDER = &H200
Public Const SWP_NOREDRAW = &H8
Public Const SWP_NOSIZE = &H1
Public Const SWP_NOREPOSITION = SWP_NOOWNERZORDER
Public Const SWP_NOZORDER = &H4
Public Const SWP_SHOWWINDOW = &H40

完成后你再试一下
fullor2000 2003-05-19
  • 打赏
  • 举报
回复
HWND_TOPMOST
SWP_NOMOVE
SWP_NOSIZE
SWP_SHOWWINDOW
都需要设定一个值,到windows.inc中去查。
比如
const SWP_NOMOVE=&H2
ikey 2003-05-19
  • 打赏
  • 举报
回复
HWND_TOPMOST
SWP_NOMOVE
SWP_NOSIZE
SWP_SHOWWINDOW

都需要设定的吧?!
netsing 2003-05-19
  • 打赏
  • 举报
回复
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 Sub Form_Load()
SetWindowPos Me.hwnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE Or SWP_NOSIZE Or SWP_SHOWWINDOW
End Sub
先设好HWND_TOPMOST 的值
koa3000 2003-05-19
  • 打赏
  • 举报
回复
HWND_TOPMOST 的值设没有?

7,766

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧