消息是一个一个来的,所以左键按下并托动只需把左键(WM_lbuttondown)屏蔽就OK了!
if msg= (WM_lbuttondown and wm_mouseMove)的写法不对,应该这样:
if msg= WM_lbuttondown and msg= wm_mouseMove then
注意以上不可能出现因为消息是一个一个来的
Private Sub DHTMLEdit1_DocumentComplete()
Dim ATLHwnd As Long
If Not DHEFirstDC Then
DHEFirstDC = True
ATLHwnd = FindWindowEx(UserControl.hwnd, 0, vbNullString, vbNullString)
DHEHwnd = FindWindowEx(ATLHwnd, 0, "Internet Explorer_Server", vbNullString)
Do While DHEHwnd = 0
ATLHwnd = FindWindowEx(UserControl.hwnd, ATLHwnd, vbNullString, vbNullString)
If ATLHwnd = 0 Then Exit Do
DHEHwnd = FindWindowEx(ATLHwnd, 0, "Internet Explorer_Server", vbNullString)
Loop
If DHEHwnd <> 0 Then
prevWndProc = GetWindowLong(DHEHwnd, GWL_WNDPROC)
SetWindowLong DHEHwnd, GWL_WNDPROC, AddressOf WndProc
End If
End If
End Sub
'Witten by FQ!
'Ver1.04
Private Sub UserControl_Terminate()
DHEFirstDC = False
If prevWndProc <> 0 Then
SetWindowLong DHEHwnd, GWL_WNDPROC, prevWndProc
prevWndProc = 0
End If
End Sub
Public Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long
Public Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
Public Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Private Declare Function CallWindowProc Lib "user32" Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Long, ByVal hwnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Public DHEFirstDC As Boolean
Public DHEHwnd As Long
Public prevWndProc As Long
'Witten by FQ!
'Ver1.04
Function WndProc(ByVal hwnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
If Msg = WM_CHAR Or Msg = WM_COMMAND Or Msg = WM_MOUSEMOVE Then
Else
WndProc = CallWindowProc(prevWndProc, hwnd, Msg, wParam, lParam)
End If
End Function
Private Sub DHTMLEdit1_DocumentComplete()
Dim ATLHwnd As Long
If Not DHEFirstDC Then
DHEFirstDC = True
ATLHwnd = FindWindowEx(UserControl.hwnd, 0, vbNullString, vbNullString)
DHEHwnd = FindWindowEx(ATLHwnd, 0, "Internet Explorer_Server", vbNullString)
Do While DHEHwnd = 0
ATLHwnd = FindWindowEx(UserControl.hwnd, ATLHwnd, vbNullString, vbNullString)
If ATLHwnd = 0 Then Exit Do
DHEHwnd = FindWindowEx(ATLHwnd, 0, "Internet Explorer_Server", vbNullString)
Loop
If DHEHwnd <> 0 Then
prevWndProc = GetWindowLong(DHEHwnd, GWL_WNDPROC)
SetWindowLong DHEHwnd, GWL_WNDPROC, AddressOf WndProc
End If
End If
End Sub
'Witten by FQ!
'Ver1.03
Private Sub UserControl_Terminate()
DHEFirstDC = False
If prevWndProc <> 0 Then
SetWindowLong DHEHwnd, GWL_WNDPROC, prevWndProc
prevWndProc = 0
End If
End Sub
Public Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long
Public Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
Public Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Private Declare Function CallWindowProc Lib "user32" Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Long, ByVal hwnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Public DHEFirstDC As Boolean
Public DHEHwnd As Long
Public prevWndProc As Long
'Witten by FQ!
'Ver1.03
Function WndProc(ByVal hwnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
If Msg = WM_CHAR Or Msg = WM_COMMAND _
Or Msg = WM_LBUTTONDOWN Or Msg = WM_RBUTTONDOWN Then
Else
WndProc = CallWindowProc(prevWndProc, hwnd, Msg, wParam, lParam)
End If
End Function
Private Sub DHTMLEdit1_DocumentComplete()
Dim ATLHwnd As Long
If Not DHEFirstDC Then
DHEFirstDC = True
ATLHwnd = FindWindowEx(UserControl.hwnd, 0, vbNullString, vbNullString)
DHEHwnd = FindWindowEx(ATLHwnd, 0, "Internet Explorer_Server", vbNullString)
Do While DHEHwnd = 0
ATLHwnd = FindWindowEx(UserControl.hwnd, ATLHwnd, vbNullString, vbNullString)
If ATLHwnd = 0 Then Exit Do
DHEHwnd = FindWindowEx(ATLHwnd, 0, "Internet Explorer_Server", vbNullString)
Loop
If DHEHwnd <> 0 Then
prevWndProc = GetWindowLong(DHEHwnd, GWL_WNDPROC)
SetWindowLong DHEHwnd, GWL_WNDPROC, AddressOf WndProc
End If
End If
End Sub
'Witten by FQ!
'Ver1.02
Private Sub UserControl_Terminate()
DHEFirstDC = False
If prevWndProc <> 0 Then
SetWindowLong DHEHwnd, GWL_WNDPROC, prevWndProc
prevWndProc = 0
End If
End Sub
Public Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long
Public Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
Public Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Private Declare Function CallWindowProc Lib "user32" Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Long, ByVal hwnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Public DHEFirstDC As Boolean
Public DHEHwnd As Long
Public prevWndProc As Long
'Witten by FQ!
'Ver1.02
Function WndProc(ByVal hwnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
If Msg = WM_CHAR Or Msg = WM_COMMAND _
Or Msg = WM_LBUTTONDOWN = &H201 Or Msg = WM_RBUTTONDOWN = &H204 Then
Else
WndProc = CallWindowProc(prevWndProc, hwnd, Msg, wParam, lParam)
End If
End Function
Private Sub DHTMLEdit1_DocumentComplete()
Dim ATLHwnd As Long
If Not DHEFirstDC Then
DHEFirstDC = True
ATLHwnd = FindWindowEx(UserControl.hwnd, 0, vbNullString, vbNullString)
DHEHwnd = FindWindowEx(ATLHwnd, 0, "Internet Explorer_Server", vbNullString)
If DHEHwnd <> 0 Then
prevWndProc = GetWindowLong(DHEHwnd, GWL_WNDPROC)
SetWindowLong DHEHwnd, GWL_WNDPROC, AddressOf WndProc
End If
End If
End Sub
'Witten by FQ!
'Ver1.01
Private Sub UserControl_Terminate()
If prevWndProc <> 0 Then
SetWindowLong DHEHwnd, GWL_WNDPROC, prevWndProc
prevWndProc = 0
End If
End Sub
Public Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long
Public Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
Public Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Private Declare Function CallWindowProc Lib "user32" Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Long, ByVal hwnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Public DHEFirstDC As Boolean
Public DHEHwnd As Long
Public prevWndProc As Long
'Witten by FQ!
'Ver1.01
Function WndProc(ByVal hwnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
If Msg = WM_CHAR Or Msg = WM_COMMAND _
Or Msg = WM_LBUTTONDOWN = &H201 Or Msg = WM_RBUTTONDOWN = &H204 Then
Else
WndProc = CallWindowProc(prevWndProc, hwnd, Msg, wParam, lParam)
End If
End Function
Private Sub DHTMLEdit1_DocumentComplete()
Dim ATLHwnd As Long
ATLHwnd = FindWindowEx(UserControl.hwnd, 0, vbNullString, vbNullString)
DHEHwnd = FindWindowEx(ATLHwnd, 0, "Internet Explorer_Server", vbNullString)
If DHEHwnd <> 0 Then
prevWndProc = GetWindowLong(DHEHwnd, GWL_WNDPROC)
SetWindowLong DHEHwnd, GWL_WNDPROC, AddressOf WndProc
End If
End Sub
Private Sub UserControl_Terminate()
'取消限制时用如下代码:
If prevWndProc <> 0 Then
SetWindowLong DHEHwnd, GWL_WNDPROC, prevWndProc
prevWndProc = 0
End If
End Sub
Public Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long
Public Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
Public Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Private Declare Function CallWindowProc Lib "user32" Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Long, ByVal hwnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Public prevWndProc As Long
Public DHEHwnd As Long
Function WndProc(ByVal hwnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
If Msg = WM_CHAR Or Msg = WM_COMMAND _
Or Msg = WM_LBUTTONDOWN = &H201 Or Msg = WM_RBUTTONDOWN = &H204 Then
Else
WndProc = CallWindowProc(prevWndProc, hwnd, Msg, wParam, lParam)
End If
End Function