源码资源
 
Photoshop
 
     

在vb中使用加速键(accelerator keys)
加入日期: 2006-12-17     关键字: vb,加速键
文章来源: 网络     文章作者: 佚名     责任编辑: 第七乐章
添加收藏夹    打印此页    关闭窗口
  收藏此页到  365Key网摘  天极网摘  博采文摘  和讯网摘  人人网摘

'---------------------------------------------------------------------------------------
' Module : Module1
' DateTime : 2005-10-12 00:14
' Author : Lingll
' Email : lingll_xl@163.com
' Purpose : TranslateAccelerator sample
'---------------------------------------------------------------------------------------

Option Explicit


Public Declare Function GetMessage Lib "user32.dll" Alias "GetMessageA" (ByRef lpMsg As MSG, ByVal hwnd As Long, ByVal wMsgFilterMin As Long, ByVal wMsgFilterMax As Long) As Long
Public Declare Sub PostQuitMessage Lib "user32.dll" (ByVal nExitCode As Long)
Public Declare Function TranslateAccelerator Lib "user32.dll" Alias "TranslateAcceleratorA" (ByVal hwnd As Long, ByVal hAccTable As Long, ByRef lpMsg As MSG) As Long
Public Declare Function CreateAcceleratorTable Lib "user32.dll" Alias "CreateAcceleratorTableA" (ByVal lpaccl As Long, ByVal cEntries As Long) As Long

Public Declare Function DestroyAcceleratorTable Lib "user32.dll" (ByVal haccel As Long) As Long
Public Declare Function TranslateMessage Lib "user32.dll" (ByRef lpMsg As MSG) As Long
Public Declare Function DispatchMessage Lib "user32.dll" Alias "DispatchMessageA" (ByRef lpMsg As MSG) As Long
Public Type POINTAPI
x As Long
y As Long
End Type


Public Type MSG
hwnd As Long
message As Long
wParam As Long
lParam As Long
time As Long
pt As POINTAPI
End Type

Public Type ACCEL
fVirt As Integer

key As Integer
cmd As Integer
'rev As Integer
End Type

Public Const FSHIFT As Long = &H4
Public Const FCONTROL As Long = &H8
Public Const FALT As Long = &H10
Public Const FNOINVERT As Long = &H2
Public Const FVIRTKEY As Long = 3 ' 131
Public Const WM_COMMAND As Long = &H111
Public Const VK_F11 As Long = &H7A
Public Const WM_KEYDOWN As Long = &H100


Sub Main()
Dim tHwnd&

tHwnd = Form1.hwnd
Form1.Show

Dim tMsg As MSG

Dim tVk(0 To 1) As ACCEL

'Ctrl+C
With tVk(0)
.cmd = 102
.fVirt = FVIRTKEY Or FCONTROL
.key = vbKeyC
End With

'F8
With tVk(1)
.cmd = 101
.fVirt = FVIRTKEY Or FCONTROL
.key = vbKeyF8
End With

Dim tTable&
tTable = CreateAcceleratorTable(VarPtr(tVk(0)), 2)

While (GetMessage(tMsg, 0, 0, 0) <> 0)
If TranslateAccelerator(tHwnd, tTable, tMsg) = 0 Then
Call TranslateMessage(tMsg)
Call DispatchMessage(tMsg)
End If
Wend
DestroyAcceleratorTable (tTable)

End Sub

对form1做子类处理,响应WM_COMMAND消息,
记得在程序退出时 PostQuitMessage (0)

什么情况下需要:当用api创建菜单的时候,当想要动态改变菜单快捷键的时候

by lingll
lingll_xl@163.com
lingll.yeah.net


Google搜索 本站


站内搜索:
 





相关文章:
快速导航
 

[VB编程]

系统控制 窗口界面 网络应用 文件操作 图形方面 字符串 多媒体 数据库 其他方面 游戏编写
[网页制作]
制作技巧 建站理念 新手上路 高级应用 ASP技术
[Flash制作教程]
Flash制作
[资源下载]
VB源码下载 建站资源 Flash源码
[沐风软件]
沐风网页三叉戟 下载 注册
  FlashRun 下载 注册
[沐风服务]
域名注册 主机空间 建站服务

关于我们 |  项目合作 | 版权声明  |  | 
闽ICP备05001148号
本站为非盈利性质网站,所开展的一些业务旨在维持网站运转。主机租用、域名注册服务由亿讯网络提供。
沐风经典网友交流群:7738284
©2005 沐风工作室™. 版权所有