如果另一个程序也是“总在最前”,那么怎样让我的程序在它之前???-----------------------------------------------------急 + + !

WangTiger 2000-08-25 12:20:00
加精
谢谢!
...全文
384 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
Maxwell 2000-08-27
  • 打赏
  • 举报
回复
有一个函数是改变窗口Z-Order的,常居顶端的窗口也是有顺序的,设置到顶端就行了.从dandycheung的那个函数SetForegroundWindow()开始查.
OUYAN 2000-08-26
  • 打赏
  • 举报
回复
'声明:
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 = 2
Private Const SWP_NOSIZE = 1
Private Const TOPMOST_FLAGS = SWP_NOMOVE Or SWP_NOSIZE
'代码:放在form1_load()中
SetWindowPos Form1.hwnd, HWND_TOPMOST, 0, 0, 0, 0, TOPMOST_FLAGS'前
prefix 2000-08-25
  • 打赏
  • 举报
回复
印象中好像Always On Top有级别之分,但想不起来怎么设置。比如任务栏就比一般的Always On Top级别高,但它不是最高,记得好像是第二高还是第三高,还可以设置为更高的。但已经是很久以前的事的,不太清楚,但应该有这回事。
dandycheung 2000-08-25
  • 打赏
  • 举报
回复
简单来讲,Windows 的窗口分为两类:一类为高居顶端,另一类为正常窗口。但如果有多个窗口为高居顶端窗口,则其相互之间的覆盖关系同正常窗口相同。如果你要一直保证你的窗口也居于其他同类窗口之上,则必须对你的窗口周期性调用SetForegroundWindow(),但这样将干扰其他程序正常运行。另外,你可以仔细钻研一下微软的有关于Z-Order方面的资料,也许能另外找到解决办法。
WangTiger 2000-08-25
  • 打赏
  • 举报
回复
不行!
用你的OICQ和这个程序比比,就知道了。
shines77 2000-08-25
  • 打赏
  • 举报
回复
此段源程序一定能解决你的问题!:

Option Explicit

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

Const HWND_TOPMOST = -1
Const HWND_NOTOPMOST = -2
Const SWP_NOACTIVATE = &H10
Const SWP_SHOWWINDOW = &H40
Const SWP_NOMOVE = &H2
Const SWP_NOSIZE = &H1

Const FormFlags = SWP_NOMOVE Or SWP_NOSIZE Or SWP_SHOWWINDOW Or SWP_NOACTIVATE

Public Sub WindowAlwaysOnTop(Form_Hwnd As Long, vStaus As Boolean)

Dim Dummy As Long

If vStaus Then
' 常在顶端
Dummy = SetWindowPos(Form_Hwnd, HWND_TOPMOST, 0, 0, 0, 0, FormFlags)
Else
' 不常在顶端
Dummy = SetWindowPos(Form_Hwnd, HWND_NOTOPMOST, 0, 0, 0, 0, FormFlags)
End If

End Sub

Private Sub Form_Load()
' 举例
WindowAlwaysOnTop Me.hwnd, True
End Sub

郭子

7,759

社区成员

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

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