关于SETWINDOWPOS(窗体置顶的问题)

rexyudl 2003-06-03 09:24:30
当我使用SETWINDOWPOS函数将窗体置顶后同时将窗体设置在屏幕的正中心时!
当某个条件成立时弹出个MSGBOX时,MSGBOX被置顶的窗体挡住程序无法继续执行!
请问如何解决!
...全文
516 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
rexyudl 2003-06-03
  • 打赏
  • 举报
回复
这个办法我之前早就用过了啊!
我的窗体并不是满屏的!
这样取消置顶后窗体自动到了左上角了!
窗体就不居中了啊!
而在程序里设置FROM.STARTUPPOSITION属性会出编译错误!
有别的办法吗?
既让窗体居中,同时又能完成我想要完成的功能!

qingming81 2003-06-03
  • 打赏
  • 举报
回复
上面的
Public IdiomAll As Long
Public IdiomGroup As Long
Public IdiomSerial As Long
请删除,这是我的程序中用到的变量,对你无用
qingming81 2003-06-03
  • 打赏
  • 举报
回复
'模块代码
Option Explicit

#If Win16 Then
Declare Sub SetWindowPos Lib "User" (ByVal hWnd As Integer, ByVal hWndInsertAfter As Integer, ByVal X As Integer, ByVal Y As Integer, ByVal cx As Integer, ByVal cy As Integer, ByVal wFlags As Integer)
#Else
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
#End If

Const SWP_NOMOVE = 2
Const SWP_NOSIZE = 1
Const HWND_TOPMOST = -1
Const HWND_NOTOPMOST = -2
Const SWP_NOACTIVATE = &H10
Const SWP_SHOWWINDOW = &H40
Const wFlags = SWP_NOACTIVATE Or SWP_SHOWWINDOW Or SWP_NOMOVE Or SWP_NOSIZE

Public IdiomAll As Long
Public IdiomGroup As Long
Public IdiomSerial As Long

Public Sub KeepOnTop(frmForm As Form)
SetWindowPos frmForm.hWnd, HWND_TOPMOST, 0, 0, 0, 0, wFlags
End Sub

Public Sub RemoveOnTop(frmForm As Form)
SetWindowPos frmForm.hWnd, HWND_NOTOPMOST, 0, 0, 0, 0, wFlags
End Sub



'操作代码
private sub command1_click()
RemoveOnTop(me)
msgbox "你好",vbokonly
keepontop(me)
end sub
qingming81 2003-06-03
  • 打赏
  • 举报
回复
你可以在弹出msgbox之前,取消窗体的置顶。在msgbox完成工作后再恢复窗体的置顶。
rexyudl 2003-06-03
  • 打赏
  • 举报
回复
自己顶一下
pigsanddogs 2003-06-03
  • 打赏
  • 举报
回复
SetWindowPos frmForm.hWnd, -1, 0, 0, 0, 0, 3
中的0 0 0 0 是相对于from 的 staruppostion来的
如果窗体设计的时候startuppostion就是居中, 则 0 0 0 0 则是屏幕中心
kmzs 2003-06-03
  • 打赏
  • 举报
回复
SetWindowPos frmForm.hWnd, -2, 0, 0, 0, 0, 3
msgbox ""
SetWindowPos frmForm.hWnd, -1, 0, 0, 0, 0, 3
肯定可以,我的frmsplash就是这么做的,仍然居中

1,486

社区成员

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

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