如何动态使用VB快捷键?
我有个功能需要实现VB.Form上的菜单的动态添加、修改、删除功能,现遇到以下一个问题一直未能克服,特来向大师们求教:
1、我已有的Form上的菜单是用VB自带的MenuEditor生成的,里面的有个别的菜单是有快捷键的,我子类化了此窗体。现在鼠标点击此菜单的时候,我都能感应到相应的消息(WM_COMMAND),可是我用快捷键去激活菜单,VBIDE里的代码能相应,但是我子类化的过程却收不到相应消息,请问是什么原因造成的呢?
Form菜单代码:(快捷键是:Ctrl+N)
子类化代码:(快捷键激活菜单时,下面过程捕捉不到,但是点击是可以捕捉到得)
是不是因为我捕捉的消息不对,VB的MenuEditor编辑出来的快捷键再按得时候会触发什么消息呢?
1、我已有的Form上的菜单是用VB自带的MenuEditor生成的,里面的有个别的菜单是有快捷键的,我子类化了此窗体。现在鼠标点击此菜单的时候,我都能感应到相应的消息(WM_COMMAND),可是我用快捷键去激活菜单,VBIDE里的代码能相应,但是我子类化的过程却收不到相应消息,请问是什么原因造成的呢?
Form菜单代码:(快捷键是:Ctrl+N)
Private Sub mnuFileOpen_Click()
'/* 快捷键及鼠标点击都能执行到
MsgBox "FormMenu Clicked!" & mnuFileOpen.Name
End Sub
子类化代码:(快捷键激活菜单时,下面过程捕捉不到,但是点击是可以捕捉到得)
Private Function ISubclass_WindowProc(ByVal Hwnd As Long, ByVal iMsg As Long, ByVal wParam As Long, ByVal lParam As Long, Optional bCancel As Boolean = False) As Long
Dim tWinMessage As MSG
Dim lMenuID As Long
Dim oMenuItem As MenuItem
Select Case iMsg
Case WM_COMMAND
If lParam = 0 Then
lMenuID = LOWORD(wParam)
Set oMenuItem = m_oMenuHelper.FindMenuItemByID(lMenuID)
If Not oMenuItem Is Nothing Then
MsgBox "MenuItem(" & oMenuItem.Name & ") Clicked!"
End If
End If
Case WM_SYSKEYUP, WM_KEYUP, WM_KEYDOWN, WM_SYSKEYDOWN
tWinMessage.Hwnd = Hwnd
tWinMessage.message = iMsg
tWinMessage.wParam = wParam
tWinMessage.lParam = lParam
tWinMessage.time = CLng(Now)
TranslateMessage tWinMessage
MsgBox "wParam:" & wParam & ",lParam:" & lParam
Case Else
End Select
End Function
是不是因为我捕捉的消息不对,VB的MenuEditor编辑出来的快捷键再按得时候会触发什么消息呢?
...全文
相关推荐
VB2008快捷键表
《VB2008快捷键表》是一份针对Visual Basic 2008开发环境的高效编程工具,尤其适合那些频繁使用VB.NET进行软件开发的程序员。
支持快捷键的VB记事本程序
【标题】"支持快捷键的VB记事本程序"揭示了这是一个使用Visual Basic(VB)编程语言开发的应用程序,它模仿了Windows操作系统内置的记事本功能,并且增加了对快捷键的支持。
VB6.0快捷键大全.pdf
在实际使用中,应以VB6.0的官方文档或实际软件测试为准。此外,为了更好地利用快捷键,建议参考VB6.0的完整快捷键列表,并在编程过程中实际操作以加深记忆。
VB2005窗体 透明度 菜单快捷键
通过改变这个颜色或者动态修改控件的背景色,可以实现动态透明效果。2. **菜单快捷键**: 在VB2005中,可以为菜单项添加快捷键,提高用户的操作效率。
VB6.0快捷键大全
同时,了解并使用Windows通用的快捷键也能提高整体的计算机使用体验。


API
