vb 窗体置顶

来源:百度知道 编辑:UC知道 时间:2024/06/01 05:42:18
网上找的代码都不怎么合我的要求:
即使调出前端显示的任务管理器,窗体还是置顶。
即使是点击屏幕左下角的“显示桌面”,窗体也不会消失。

SetWindowPos me.hwnd,-1,0,0,0,0,5
最好用一下timer控件。

置顶窗体,意思就是最顶,TopMost;
而任务管理器也是最顶,因此在最高的窗口显示级别中就存在了两个窗口,于是它们互相不置顶;但是对于其它没有置顶的窗口是置顶的——它们互相只有普通关系,也就是活动窗口在另外一个窗口之上。

因此你可以试试看每隔1000ms就me.setfocus一下 将置顶的窗口不断获得焦点- -

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 Const SWP_NOMOVE = &H2
Private Const SWP_NOSIZE = &H1
Private Const SWP_NOZORDER = &H8

Private Sub Form_Load()
SetFormTopmost Me
End Sub

Private Sub SetFormTopmost(TheForm As Form)
SetWindowPos TheForm.hwnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOZORDER + SWP_NOMOVE + SWP_NOSIZE
End Sub

即使是点击屏幕左下角的“显示桌面”,窗体也不会消失
需要设置窗口属性的:ShowInTaskbar属性为false

同时具有"窗口置顶"的两个窗体,都可以覆盖另一个窗体^

留脚印学习