在线等待,如何让一个弹出窗口一直在最前?

darktime 2003-05-30 06:59:54
两个Form: frmMain,frmPB。想让frmPB一直在最前,且不影响frmMain的运行。请指点迷津。

frmMain:cmdPopPB,txtRtn 代码如下:

Private Sub cmdPopPB_Click()
Dim I, J As Long
k = 0
Load frmPB
frmPB.Show
frmPB.PB.Max = 100
frmPB.PB.Value = 0
For I = 1 To 100
'=======================================
For J = 1 To 10000000 '代表一个很费时间的
Next J '过程
'========================================
txtRtn.Text = I
frmPB.PB.Value = I
If frmPB.flagCancel Then
Unload frmPB
Exit Sub
End If
DoEvents
Next I
Unload frmPB
End Sub

frmPB:PB(ProgressBar),cmdCancel 代码:

Public flagCancel As Boolean
Private Sub cmdCancel_Click()
flagCancel = True
End Sub
Private Sub Form_Load()
flagCancel = False
PB.Value = 0
End Sub
...全文
47 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
darktime 2003-06-02
  • 打赏
  • 举报
回复
谢谢各位!
qbilbo 2003-05-31
  • 打赏
  • 举报
回复
frmPB.Show 0 ,frmMain
dyx 2003-05-30
  • 打赏
  • 举报
回复
'窗体位于最上层api
Public Declare Function SetWindowPos Lib "user32" (ByVal hWnd As Long, ByVal hWndInsertAfter As Long, ByVal X As Long, Y, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long
'常量
Public Const HWND_TOPMOST = -1
Public Const HWND_NOTOPMOST = -2
Public Const SWP_NOMOVE = &H2
Public Const SWP_NOSIZE = &H1
Public Const SWP_NOACTIVATE = &H10
Public Const SWP_SHOWWINDOW = &H40
Public Const TOPMOST_FLAGS = SWP_NOMOVE Or SWP_NOSIZE
-----------------------------------------------------------------------------
Public Sub AlwaysOnTop(TheForm As Form, blnOnTop As Boolean) '使窗体位于最上层
'变量 TheForm:需要位于最上层的窗体
'变量 blnOnTop:True-窗体位于最上层,False-窗体正常显示
If blnOnTop = True Then
SetWindowPos TheForm.hWnd, HWND_TOPMOST, 0, 0, 0, 0, TOPMOST_FLAGS
Else
SetWindowPos TheForm.hWnd, HWND_NOTOPMOST, 0, 0, 0, 0, TOPMOST_FLAGS
End If
End Sub
------------------------------------------------------------------------
frmPB:
Private Sub Form_Activate() '激活窗体
AlwaysOnTop Me, True '窗体位于最上层
End Sub
darktime 2003-05-30
  • 打赏
  • 举报
回复
我是想要 frmPB.Show 1 的效果,也不是在最前面。
但 frmPB.Show 1 后的问题是frmPB上的进度条都不动了,怎么样两全其美?
of123 2003-05-30
  • 打赏
  • 举报
回复
Private Declare Function SetWindowPos Lib "user32" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal x As Long, y, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long
Private Const HWND_TOPMOST = -1
Private Const HWND_NOTOPMOST = -2
Private Const SWP_NOMOVE = &H2
Private Const SWP_NOSIZE = &H1
Private Const TOPMOST_FLAGS = SWP_NOMOVE Or SWP_NOSIZE

Public Sub MakeNormal(hwnd As Long)
SetWindowPos hwnd, HWND_NOTOPMOST, 0, 0, 0, 0, TOPMOST_FLAGS
End Sub

Public Sub MakeTopMost(hwnd As Long)
SetWindowPos hwnd, HWND_TOPMOST, 0, 0, 0, 0, TOPMOST_FLAGS
End Sub

1,488

社区成员

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

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