本文实例讲述了VB屏蔽文本框中的右键菜单、复制、粘贴等功能的实现方法。该功能就是禁止文本框的右键功能,造成点击鼠标右键无效。是非常常见的一类实用功能。
具体的功能模块代码如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
'========================================================== '| 模 块 名 | TextBoxDisableAbility '| 说 明 | 禁止文本框的功能 '==========================================================Option Explicit Private Declare Function SetWindowText Lib "user32" Alias "SetWindowTextA" ( ByVal hwnd As Long , ByVal lpString As String ) 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 Const GWL_WNDPROC = (-4) Private Const WM_CUT = &H300 '-------------剪切消息 Private Const WM_COPY As Long = &H301 '-------------复制消息 Private Const WM_PASTE As Long = &H302 '-------------粘贴消息 Private Const WM_CLEAR = &H303 '-------------删除消息[右键菜单的删除] Private Const EM_UNDO = &HC7 '-------------撤销消息 Private Const WM_CONTEXTMENU = &H7B '-------------右键菜单 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 Select Case Msg Case WM_CUT, WM_COPY, WM_PASTE, WM_CLEAR, EM_UNDO, WM_CONTEXTMENU '这里处理自定义的事件,最好为空 Case Else '回调系统函数处理 WndProc = CallWindowProc(prevWndProc, hwnd, Msg, wParam, lParam) End Select End Function Public Sub DisableAbility(TargetTextBox As TextBox) '程序启动时调用这个 prevWndProc = GetWindowLong(TargetTextBox.hwnd, GWL_WNDPROC) SetWindowLong TargetTextBox.hwnd, GWL_WNDPROC, AddressOf WndProc End Sub |
本代码的功能屏蔽文本框的右键菜单、复制、粘贴等,在不少的程序中都可以见到这些功能。共享给各位VB爱好者,希望能对大家有所帮助!