1,486
社区成员
发帖
与我相关
我的任务
分享
Option Explicit
' 转移输入焦点的声明
Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
' 禁止本窗体拥有输入焦点的常数
Private Const HWND_NOTOPMOST = -2
Private Const WS_DISABLED = &H8000000 Private Const GWL_EXSTYLE = (-20)
Private Const GWL_STYLE = (-16)
'禁止拥有输入焦点
Private Sub Form_Load()
SetWindowLong Me.hwnd, GWL_EXSTYLE, WS_DISABLED Or GetWindowLong(Me.hwnd, GWL_EXSTYLE)
End Sub
'只能做成无标题栏的然后利用 mouse_move事件:
Option Explicit
Private hwnd_Avtive As Long '前台窗口句柄变量
'移动窗体声明
Private Declare Function ReleaseCapture Lib "user32" () As Long
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
'窗体风格设置声明
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 GetForegroundWindow Lib "user32" () As Long
Private Declare Function SetForegroundWindow Lib "user32" (ByVal hwnd As Long) As Long
'窗体无焦点风格常数
Private Const WS_DISABLED = &H8000000
Private Const GWL_EXSTYLE = (-20)
'移动窗体常数
Private Const WM_SYSCOMMAND = &H112 '查下
Private Const SC_MDIMOVE = &HF012& '?网上的这个为什么是这个数SC_MOVE = &HF012; API浏览器上为什么又是这个数Public Const SC_MOVE = &HF010&?
'载入时设为无焦点
Private Sub Form_Load()
SetWindowLong Me.hwnd, GWL_EXSTYLE, WS_DISABLED '? 为什么要用EXSTYLE
End Sub
Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
hwnd_Avtive = GetForegroundWindow '获取前台窗口句柄
SetForegroundWindow Me.hwnd '激活本窗体
ReleaseCapture '移动窗体(MousePointer = 0--鼠标形状缺省)
SendMessage Me.hwnd, WM_SYSCOMMAND, SC_MDIMOVE, 0
SetForegroundWindow hwnd_Avtive '重新激活前台窗口
End Sub