在vb中有好长的代码来实现,在.Net中只一句 [窗体].TopMost=True 就能搞定。但在vb6.0中还要用啊。以下是源代码。
模块部分通用声明
- Public 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
- '以上为API函数声明
- Public Const HWND_TOPMOST = -1
- Public Const SWP_NOMOVE =
- Public Const SWP_NOSIZE =
- Public Const SWP_FRAMECHANGED =
- 'The frame changed: send WM_NCCALCSIZE
- Public Const SWP_DRAWFRAME = SWP_FRAMECHANGED
- '以上为程序中用到的常量
- 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 SWP_HIDEWINDOW =
- Public Const SWP_NOACTIVATE =
- Public Const SWP_NOCOPYBITS =
- Public Const SWP_NOOWNERZORDER =
- 'Don't do owner Z ordering
- Public Const SWP_NOREDRAW =
- Public Const SWP_NOREPOSITION = SWP_NOOWNERZORDER
- Public Const SWP_NOZORDER =
- Public Const SWP_SHOWWINDOW =
- '以上常量声明在程序中没有使用
- '可以试着在调用SetWindowPos函数时使用这些常量或它们的组合
- '得到其他效果
- Public Const Flags = SWP_DRAWFRAME Or SWP_NOMOVE Or SWP_NOSIZE
窗体部分,画一个checkbox,click事件如下:
- Private Sub Check1_Click()
- Dim res As Long
- If Check1.Value = 1 Then
- res = SetWindowPos(Me.hwnd, HWND_TOPMOST, _
- 0, 0, 0, 0, Flags)
- Else
- res = SetWindowPos(Me.hwnd, HWND_NOTOPMOST, _
- 0, 0, 0, 0, Flags)
- End If
- End Sub
OK。
源程序下载地址:http://vip-file.com/download/505f61563564/---------------.rar.html