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 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
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 prevWndProc As Long
Private Function WndProc(ByVal hwnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
If Msg = WM_RBUTTONDOWN Then
Else
WndProc = CallWindowProc(prevWndProc, hwnd, Msg, wParam, lParam)
End If
End Function
'禁止TextBox的系统右键菜单
Sub DisableRightClick(txtTarget As TextBox)
prevWndProc = GetWindowLong(txtTarget.hwnd, GWL_WNDPROC)
SetWindowLong txtTarget.hwnd, GWL_WNDPROC, AddressOf WndProc
End Sub
笔误
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 Const EM_SETREADONLY = &HCF
Dim boReadOnly As Boolean
'第一次双击只读,再次双击可编辑,再双击又只读...。设定boReadOnly的初值为True或False可改变第一次双击时的状态
Private Sub Text1_DblClick()
Dim retval As Long
boReadOnly = Not boReadOnly
retval = SendMessage(Text1.hwnd, EM_SETREADONLY, boReadOnly, ByVal 0&) '将文本框设为可编辑
End Sub
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 Const EM_SETREADONLY = &HCF
Dim boReadOnly As Boolean
'第一次双击只读,再次双击可编辑,再双击又只读...。设定boReadOnly的初值为True或False可改变第一次双击时的状态
Private Sub Text1_DblClick()
Dim retval As Long
ReadOnly = Not ReadOnly
retval = SendMessage(Text1.hwnd, EM_SETREADONLY, ReadOnly, ByVal 0&) '将文本框设为可编辑
End Sub