怎样屏蔽掉文本框右键菜单的粘贴功能(拷贝功能仍可用)

snowrose 2003-03-19 05:06:13
怎样屏蔽掉在文本框点击右键,弹出菜单的粘贴功能(拷贝功能仍可用)
...全文
59 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
snowrose 2003-03-20
  • 打赏
  • 举报
回复
还需要加一句:)
Private Sub mnuCopy_Click()
Clipboard.Clear
Clipboard.SetText Text1.SelText
End Sub
snowrose 2003-03-20
  • 打赏
  • 举报
回复
thanks a lot
wu_yongcai 2003-03-20
  • 打赏
  • 举报
回复
忘了,应该是:
Private Sub mnuCopy_Click()
Clipboard.SetText Text1.SelText
End Sub
wu_yongcai 2003-03-20
  • 打赏
  • 举报
回复
只屏蔽系统菜单的粘贴功能很难做到,其实自己做菜单也很容易,Copy到剪贴板的操作又比较简单,效果可以完全一样
只要在弹出菜单之前作一下判断:
If Text1.SelLength > 0 Then
mnuCopy.Enabled = True
Else
mnuCopy.Enabled = False
End If
然后在Copy菜单下添加:
Private Sub mnuCopy_Click()
Clipboard.SetText Text1.Text
End Sub
snowrose 2003-03-20
  • 打赏
  • 举报
回复
我就是不想用自己定义的菜单。
to:wu_yongcai(浪人)
你的做法还是要弹出自定义的菜单 PopupMenu mnuCustomize
难道不能直接将系统菜单的粘贴功能屏蔽吗?
用户 昵称 2003-03-20
  • 打赏
  • 举报
回复
wu_yongcai(浪人)
good
FUNDGIRL 2003-03-19
  • 打赏
  • 举报
回复
to:qbilbo(风之兄)

那种做法是比较低级的做法,有时点得快点原菜单会出来的

还有,按下输入法键也能出来的。

真正用子类拦下&h7b消息才是正道
boyzhang 2003-03-19
  • 打赏
  • 举报
回复
呵呵.UP一下下

夜已深,还有什么人,像我这样,醒着在编程
-------------------------------
海纳百川,有容乃大;
壁立千仞,无欲则刚。
liushanyu 2003-03-19
  • 打赏
  • 举报
回复
楼上的很好。
qbilbo 2003-03-19
  • 打赏
  • 举报
回复
不用这么麻烦吧。

TEXT控件的右键菜单是在MouseUp时弹出的,只要在MouseDown时弹出你的菜单就行了,代码如下,我已经试过没问题的。

Private Sub Text1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button = 2 Then
Text1.Enabled = False
Text1.Enabled = True

PopupMenu mnuEdit
End If
wu_yongcai 2003-03-19
  • 打赏
  • 举报
回复
代码如下:
'-----------------------Form-----------------------
Option Explicit

Private Sub Text1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button = 1 Then Exit Sub
OldWindowProc = GetWindowLong(Text1.hWnd, GWL_WNDPROC)
Call SetWindowLong(Text1.hWnd, GWL_WNDPROC, AddressOf SubClass1_WndMessage)
End Sub

Private Sub Text1_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button = 1 Then Exit Sub
Call SetWindowLong(Text1.hWnd, GWL_WNDPROC, OldWindowProc)
PopupMenu mnuCustomize
End Sub

'-----------------------bas-----------------------
Option Explicit

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

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 Function SubClass1_WndMessage(ByVal hWnd As OLE_HANDLE, ByVal Msg As OLE_HANDLE, ByVal wp As OLE_HANDLE, ByVal lp As Long) As Long
If Msg <> WM_CONTEXTMENU Then
SubClass1_WndMessage = CallWindowProc(OldWindowProc, hWnd, Msg, wp, lp)
Exit Function
End If
SubClass1_WndMessage = True
End Function

wu_yongcai 2003-03-19
  • 打赏
  • 举报
回复
自己做咯,首先屏蔽掉右键菜单,然后右键弹出自己的Copy菜单,不就行了吗!

1,486

社区成员

发帖
与我相关
我的任务
社区描述
VB API
社区管理员
  • API
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧