在win2000以上的操作系统中window增加了一条附加窗口风格WS_EX_NOACTIVATE,他可以完全满足你的要求,可以作为一条捷径:作为测试,窗体上只有一个按钮: Option Explicit Private Const GWL_STYLE = (-16) Private Const HWND_TOPMOST = -1 Private Const HWND_NOTOPMOST = -2 Private Const SWP_NOSIZE = &H1 Private Const SWP_NOMOVE = &H2 Private Const SWP_NOACTIVATE = &H10 Private Const SWP_SHOWWINDOW = &H40 Private Const WS_EX_NOACTIVATE = &H8000000 Private Const GWL_EXSTYLE = (-20) Private Declare Function SetWindowLong Lib "User32" Alias "SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long Private Declare Function GetWindowLong Lib "User32" Alias "GetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long) As Long Private Declare Sub 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)Private Sub Form_Load() Dim style As Long style = GetWindowLong(Me.hWnd, GWL_EXSTYLE) style = style Or WS_EX_NOACTIVATE Call SetWindowLong(Me.hWnd, GWL_EXSTYLE, style) SetWindowPos Me.hWnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOACTIVATE Or SWP_SHOWWINDOW Or SWP_NOMOVE Or SWP_NOSIZE End Sub这段代码的缺点是标题栏始终是灰突突的,很不好看,这可以通过自绘标题栏解决至于2000以下的只有让窗体具有WS_DISABLED风格,这样才不会转移输入焦点,当然,这样一来对事件的处理就麻烦了,看你api的功力
Option Explicit
Private Const GWL_STYLE = (-16)
Private Const HWND_TOPMOST = -1
Private Const HWND_NOTOPMOST = -2
Private Const SWP_NOSIZE = &H1
Private Const SWP_NOMOVE = &H2
Private Const SWP_NOACTIVATE = &H10
Private Const SWP_SHOWWINDOW = &H40
Private Const WS_EX_NOACTIVATE = &H8000000
Private Const GWL_EXSTYLE = (-20)
Private Declare Function SetWindowLong Lib "User32" Alias "SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Private Declare Function GetWindowLong Lib "User32" Alias "GetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long) As Long
Private Declare Sub 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)Private Sub Form_Load()
Dim style As Long
style = GetWindowLong(Me.hWnd, GWL_EXSTYLE)
style = style Or WS_EX_NOACTIVATE
Call SetWindowLong(Me.hWnd, GWL_EXSTYLE, style)
SetWindowPos Me.hWnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOACTIVATE Or SWP_SHOWWINDOW Or SWP_NOMOVE Or SWP_NOSIZE
End Sub这段代码的缺点是标题栏始终是灰突突的,很不好看,这可以通过自绘标题栏解决至于2000以下的只有让窗体具有WS_DISABLED风格,这样才不会转移输入焦点,当然,这样一来对事件的处理就麻烦了,看你api的功力