⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 64.txt

📁 介绍VB里的各种控件的使用方法,窗口控制,图像编程以及OCX等内容,还提供了一个API集供参考.
💻 TXT
字号:
隐藏文本框控件的环境菜单

如果一个窗体中有一个文本框控件,当你用鼠标右键单击它时,会弹出一个环境菜单,里面有诸如:拷贝、撤销、粘贴之类的选项。有时这个菜单会妨碍你的应用程序界面的一致性,或者你想让用户在用鼠标右键单击文本框时,弹出你自已事先设计好的菜单。 

首先添加一个标准模块,在标准模块中写入如下代码:

Option Explicit 

Public Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long 
Public 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 Const GWL_WNDPROC = (-4) 
Public Const WM_CONTEXTMENU = &H7B 
Global lpPrevWndProc As Long 
Global gHW As Long 

Public Sub Hook() 
lpPrevWndProc = SetWindowLong(gHW, GWL_WNDPROC, AddressOf gWindowProc) 
End Sub 

Public Sub Unhook() 
Dim temp As Long 
temp = SetWindowLong(gHW, GWL_WNDPROC, lpPrevWndProc) 
End Sub 

Public Function gWindowProc(ByVal hWnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long 
If Msg = WM_CONTEXTMENU 
Then Debug.Print "截获 WM_CONTEXTMENU于 " & Now 
gWindowProc = True 
Else ' 传递其他所有消息到默认的消息句柄 
gWindowProc = CallWindowProc(lpPrevWndProc, hWnd, Msg, wParam, lParam) 
End If 
End Function 

在窗体中加入两个文本框控件。然后制作一个名为mnuTempMenu的菜单,其中有两个菜单项,分别为Option1和Option2

将下面的代码放在相应的事件中。

Private Sub Form_Load() 
Dim Ctrl As Control 
For Each Ctrl In Me.Controls 
If TypeOf Ctrl Is TextBox Then 
gHW = Ctrl.hWnd 
Hook 
End If 
Next 
End Sub 

Private Sub Form_Unload(Cancel As Integer) 
Unhook 
End Sub 

Private Sub Text1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) 
If Button = 2 Then Me.PopupMenu mnuTempMenu 
End If 
End Sub 

按F5运行程序后,用鼠标分别右击两个文本框,你会发现Text1文本框会弹出你自定义的菜单,而Text2则没有反应。

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -