当前位置:编程学习 > VB >>

请问如何禁用文本框的右键菜单

请问如何禁用文本框的右键菜单 --------------------编程问答-------------------- n种方法,家里没vb。没代码。
好像,在keydown里,disable。keyup里enable。 --------------------编程问答--------------------
引用楼主 hilbert24 的回复:
请问如何禁用文本框的右键菜单

你禁用这个菜单的目的是什么呢,是想要禁止复制、粘贴?那大概要对文本框做子类化处理,再通过自定义消息处理函数达到你的目的。 --------------------编程问答--------------------
引用 1 楼 patrickkong 的回复:
n种方法,家里没vb。没代码。
好像,在keydown里,disable。keyup里enable。

应该是mouse事件 --------------------编程问答-------------------- 用子类化或HOOK技术 --------------------编程问答--------------------
引用 4 楼 zzyong00 的回复:
用子类化或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
--------------------编程问答--------------------
引用 7 楼 asftrhgjhkjlkttttttt 的回复:
简单方法,自设一空菜单,
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 --------------------编程问答--------------------

'模块代码
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
--------------------编程问答-------------------- jy497759649 向你学习 收藏了 谢谢 --------------------编程问答-------------------- 先新建一个菜单:   
文件   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
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,