一个DragDrop事件提供三条信息--DragDrop(Source as Control,X as Single,Y as
Single)Source,是已经放开的图片,图标或控件。X和Y值,是放开事件所在目表对象的水平和垂直方向位置。如:
Sub pictrue1-DragDrop(Source as Control,X as Single,Y as Single)
Pictrue1.DrawWidth=6 picture1.pset(x,y),QBcolor(4) End Sub
当一个控件拖动到另一个之上时,发生一个DragOver事件,以警告被入侵的控件或窗体发生了拖动。一个DragOver事件提供四条信息:
DragOver(Source as conterol,X as Single,Y as Single,State as
Integer) "Source"为入侵者标志。入侵者在被入侵的控件或窗体内的当前位置由X,Y来确定入侵者的状态,如是否刚刚进入。仍在其内或将要离开等由State变量报告。
Declare Function GetDriveType Lib "kernel32" Alias _
"GetDriveTypeA" (ByVal nDrive As String) As Long
然后将以上的声明放在.bas的一般模块中,如果放在 Form 之中,
须在Declare之前再加上 Private。 然后使用以下叙述调用 :
Public Declare Function CallNextHookEx Lib "user32" (ByVal hHook As
Long, ByVal nCode As Long, ByVal wParam As Long, ByVal lParam As Long) As
Long
Public Declare Function UnhookWindowsHookEx Lib "user32"
(ByVal hHook As Long) As Long
Public Declare Function
SetWindowsHookEx Lib "user32" Alias "SetWindowsHookExA" (ByVal idHook As
Long, ByVal lpfn As Long, ByVal hmod As Long, ByVal dwThreadId As Long) As
Long
Public Declare Function PostMessage Lib "user32" Alias
"PostMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As
Long, ByVal lParam As Long) As Long
Public Const WH_KEYBOARD = 2
Public Const KBH_MASK = &H20000000 Public Const WM_LBUTTONDOWN
= &H201 Public Const WM_LBUTTONUP = &H202 Global hHook As
Long 'KeyboardProc 在 VB 应用动作前发生 Public Function KeyboardProc(ByVal
nCode As Long, ByVal wParam As Long, ByVal lParam As Long) As Long If
nCode >= 0 Then '处理你希望过滤的键 If wParam = Asc("C") And (lParam
And KBH_MASK) <> 0 Then If (lParam And &HC0000000) = 0
Then '模拟在Command1 中单击 Form1.Command1.SetFocus Call
PostMessage(Form1.Command1.hwnd, WM_LBUTTONDOWN, 0, &H20002)
Call PostMessage(Form1.Command1.hwnd, WM_LBUTTONUP, 0,
&H20002) KeyboardProc = 1 Exit Function End If
End If End If KeyboardProc = CallNextHookEx(hHook, nCode,
wParam, lParam) End Function
Private Sub Form_Load() '将
KeyboardProc 连接到中断上 hHook = SetWindowsHookEx(WH_KEYBOARD, AddressOf
KeyboardProc, 0&, App.ThreadID) End Sub