智能手机存储芯片:【引用】VB中屏蔽TextBox的右键菜单

来源:百度文库 编辑:偶看新闻 时间:2024/04/28 15:45:14

一:新建一个模块。模块代码如下:

  Public OldProc As Long
Public Const GWL_WNDPROC = (-4)
Public Const WM_CONTEXTMENU = &H7B&

Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" _
(ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long

Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" _
(ByVal hWnd As Long, ByVal nIndex As Long) As Long

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 Function TextWndProc(ByVal hWnd As Long, ByVal wMsg As Long, _
                            ByVal wParam As Long, ByVal lParam As Long) As Long
    If wMsg = WM_CONTEXTMENU Then
        TextWndProc = 0
        Exit Function
    End If
    TextWndProc = CallWindowProc(OldProc, hWnd, wMsg, wParam, lParam)
End Function

二:新建一个窗体,添加一个 text控件和 check控件

 注:check控件的 caption = 保留 TextBox  的右键菜单

Private Sub Check1_Click()
  If Check1 = 0 Then
     OldProc = GetWindowLong(Text1.hWnd, GWL_WNDPROC)
     SetWindowLong Text1.hWnd, GWL_WNDPROC, AddressOf TextWndProc
  Else
     SetWindowLong Text1.hWnd, GWL_WNDPROC, OldProc
  End If
End Sub

Private Sub Form_Unload(Cancel As Integer)
    If Check1 = 0 Then
        SetWindowLong Text1.hWnd, GWL_WNDPROC, OldProc
    End If
End Sub