请问如何禁用文本框的右键菜单
请问如何禁用文本框的右键菜单 --------------------编程问答-------------------- n种方法,家里没vb。没代码。好像,在keydown里,disable。keyup里enable。 --------------------编程问答--------------------
你禁用这个菜单的目的是什么呢,是想要禁止复制、粘贴?那大概要对文本框做子类化处理,再通过自定义消息处理函数达到你的目的。 --------------------编程问答--------------------
应该是mouse事件 --------------------编程问答-------------------- 用子类化或HOOK技术 --------------------编程问答--------------------
vb子类化始终没有好好研究过的说....
用钩子解决这个应该是没什么问题....
感觉自己的回答像是蹭分....哎 --------------------编程问答-------------------- 模拟鼠标点击, 以牙还牙....^-^
Option Explicit
Private Declare Function SetCursorPos Lib "user32" (ByVal x As Long, ByVal y As Long) As Long
Private Declare Sub mouse_event Lib "user32" (ByVal dwFlags As Long, ByVal dx As Long, ByVal dy As Long, ByVal cButtons As Long, ByVal dwExtraInfo As Long)
Const MOUSEEVENTF_LEFTDOWN = &H2
Const MOUSEEVENTF_LEFTUP = &H4
Private Sub Text1_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single)
If Button = 2 Then
SetCursorPos 0, 0
mouse_event MOUSEEVENTF_LEFTDOWN Or MOUSEEVENTF_LEFTUP, 0, 0, 0, 0
End If
End Sub
--------------------编程问答-------------------- 简单方法,自设一空菜单,
Private Sub Text_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single)
If Button = 2 Then PopupMenu PopMenu
End Sub
--------------------编程问答--------------------
不用自设一空菜单,就能屏蔽
Private Sub Text_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single)
If Button = 2 Then
end if
End Sub --------------------编程问答-------------------- asftrhgjhkjlkttttttt 你也还没休息啊?
群号多少 ? --------------------编程问答-------------------- http://hi.baidu.com/markl22222/blog/item/7ff542c2ffb6ae1e0ff47774.html --------------------编程问答-------------------- mouse down disable text1
mouse up enabled text1 --------------------编程问答--------------------
--------------------编程问答-------------------- jy497759649 向你学习 收藏了 谢谢 --------------------编程问答-------------------- 先新建一个菜单:
'模块代码
Option Explicit
Private 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
'调用窗口处理
Private Const WM_RBUTTONDOWN = &H204
Private Const GWL_WNDPROC = (-4)
Private lpOldWndFunc As Long
'--------------------------------------------------------------------------------------
'函 数 名: WindowProcedure
'描 述: 窗口消息处理函数
'--------------------------------------------------------------------------------------
Private Function WindowProcedure(ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Select Case wMsg
Case WM_RBUTTONDOWN
Case Else
WindowProcedure = CallWindowProc(lpOldWndFunc, hWnd, wMsg, wParam, _
lParam) '原窗口消息处理
End Select
End Function
'--------------------------------------------------------------------------------------
'函 数 名: SubClass
'描 述: 子类化窗口
'--------------------------------------------------------------------------------------
Public Sub SubClass(ByVal hWnd As Long)
lpOldWndFunc = SetWindowLong(hWnd, GWL_WNDPROC, AddressOf WindowProcedure) '新窗口消息处理
End Sub
'--------------------------------------------------------------------------------------
'函 数 名: UnSubClass
'描 述: 取消子类化
'--------------------------------------------------------------------------------------
Public Sub UnSubClass(ByVal hWnd As Long)
Call SetWindowLong(hWnd, GWL_WNDPROC, lpOldWndFunc) '恢复原窗口消息处理
End Sub
'窗口代码
Option Explicit
'--------------------------------------------------------------------------------------
'事 件 名: Form_Load
'描 述: ----
'--------------------------------------------------------------------------------------
Private Sub Form_Load()
Call SubClass(Text1.hWnd) '子类化窗口
End Sub
'--------------------------------------------------------------------------------------
'事 件 名: Form_Unload
'描 述: ----
'--------------------------------------------------------------------------------------
Private Sub Form_Unload(Cancel As Integer)
Call UnSubClass(Text1.hWnd) '取消子类化
End Sub
文件 mnuFile
新建 mnuNew
打开 mnuOpen
Private Sub Text1_MouseDown(Button As Integer,Shift As Integer,X As Single,Y As Single)--------------------编程问答--------------------
If Button=2 Then
Text1.Enabled=False
Me.PopupMenu mnuFile
Text1.Enabled=True
End If
End Sub
补充:VB , API