关于VB的小小问题

fannyfang79 2002-09-19 03:31:13
在文本框中按鼠标右键,会出现一个菜单,如何隐藏掉这个菜单呢?请指教!谢谢!
...全文
27 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
网络老男孩了 2002-09-19
  • 打赏
  • 举报
回复
up
yjmking 2002-09-19
  • 打赏
  • 举报
回复
Enabel=false
kenerl 2002-09-19
  • 打赏
  • 举报
回复
up gz
api截获消息!
fannyfang79 2002-09-19
  • 打赏
  • 举报
回复
我如果不要弹出任何menu呢!?
道素 2002-09-19
  • 打赏
  • 举报
回复
Private Sub Text1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
' Make VB discard the mouse capture.
Text1.Enabled = False
Text1.Enabled = True
PopupMenu usermenu

End Sub
fannyfang79 2002-09-19
  • 打赏
  • 举报
回复
不对嘛!鼠标右键按下后,仍会弹出快捷菜单的。
ucme 2002-09-19
  • 打赏
  • 举报
回复
Private Sub Text1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
' Make VB discard the mouse capture.
Text1.Enabled = False
popupmenu yourmenu
Text1.Enabled = True

End Sub
这样才行
道素 2002-09-19
  • 打赏
  • 举报
回复
api方法

Option Explicit

Public OldWindowProc As Long
' 保存默认的窗口函数的地址
Public Const WM_CONTEXTMENU = &H7B
' 当右击文本框时,产生这条消息

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)
' 如果消息不是WM_CONTEXTMENU,就调用默认的窗口函数处理
Exit Function
End If
SubClass1_WndMessage = True
End Function

窗体的代码:

Option Explicit

Private Const GWL_WNDPROC = (-4)

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)
' 用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 usermenu
' 弹出自定义菜单
End Sub
道素 2002-09-19
  • 打赏
  • 举报
回复
Private Sub Text1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
' Make VB discard the mouse capture.
Text1.Enabled = False
Text1.Enabled = True

End Sub
fannyfang79 2002-09-19
  • 打赏
  • 举报
回复
可以的呀!
QQ576006 2002-09-19
  • 打赏
  • 举报
回复
这个菜单是VB自带的属性,是去不掉的.

7,763

社区成员

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

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