VB按钮定义快捷键

niaorenzaixian 2011-01-13 03:07:03
我知道的 就是在
Caption=(&1)
快捷键就是 ALT+1 问题是 这样按钮上也显示了。 (1) 这样 显示不好看。
还有个问题就是 这里只是ALT 那 CTRL 和SHIFT如何定义呢?
据说是要定义全键盘的KEYSC什么那个?


...全文
274 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
咸清 2011-01-13
  • 打赏
  • 举报
回复
局部的:
Command1.Caption = "&OK"
Command1的快捷键就是 Alt + O
全局的:

以下加到模块中
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 GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex 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 Declare Function RegisterHotKey Lib "user32" (ByVal hwnd As Long, ByVal id As Long, ByVal fskey_Modifiers As Long, ByVal vk As Long) As Long
Public Declare Function UnregisterHotKey Lib "user32" (ByVal hwnd As Long, ByVal id As Long) As Long

Public Const WM_HOTKEY = &H312
Public Const MOD_ALT = &H1
Public Const MOD_CONTROL = &H2
Public Const MOD_SHIFT = &H4
Public Const GWL_WNDPROC = (-4)
Public preWinProc As Long
Public Modifiers As Long, uVirtKey1 As Long, idHotKey As Long

Public Function SetHotKey()
preWinProc = GetWindowLong(Form1.hwnd, GWL_WNDPROC)
SetWindowLong Form1.hwnd, GWL_WNDPROC, AddressOf Keywndproc
RegisterHotKey Form1.hwnd, 1, 0, vbKeyF1 '注册热键
RegisterHotKey Form1.hwnd, 2, 0, vbKeyF3 '注册热键
'这里还可以添加
End Function


Public Function Keywndproc(ByVal hwnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
If Msg = WM_HOTKEY Then
Select Case wParam
Case 1
'热键一
case 2
'热键2
End Select
End If
Keywndproc = CallWindowProc(preWinProc, hwnd, Msg, wParam, lParam)
End Function


窗体
Private Sub Form_Load()
SetHotKey
End Sub

Private Sub Form_Unload(Cancel As Integer)
Dim ret As Long
'取消Message的截取,而使之又只送往原来的Window Procedure
ret = SetWindowLong(Me.hwnd, GWL_WNDPROC, preWinProc)
Call UnregisterHotKey(Me.hwnd, uVirtKey)
End Sub

y564642865 2011-01-13
  • 打赏
  • 举报
回复
监视键盘按键,检测到按下哪个按键就实现相应的按钮功能。
niaorenzaixian 2011-01-13
  • 打赏
  • 举报
回复
够简单。···。。。 唉。
cqq_chen 2011-01-13
  • 打赏
  • 举报
回复
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
乌拉圭软件作者gonchuki开发的变色龙按钮非常漂亮,也非常著名。源代码公开的版本最新为2.0.6B,下载地址为:http: //www.planetsourcecode.com/vb/scripts/ShowCode.asp?txtCodeId=37471&lngWId=1 由于该版本是VB开发的,在某些其它的IDE中有些属性不支持,比如说在VC中不支持ToolTipText。我将它改写为一个VC版本。但是该版本比2.0.6B有点删减,比如说gonchuki支持的按钮快捷键我改写的不支持。 另外,我新加了一种Graphic按钮类型,该类型按钮显示4个图片:通常状态图片、按下图片、鼠标移动在按钮上时的图片、Disable时图片,并且在这种类型下,没有按钮边框,可以让开发人员轻松灵活地制作各种按钮效果。 BLOG好像不能上传附件,我只好将接口定义文件及控件的H、CPP文件列出如下(我使用VC6创建的是MFC控件工程,工程名称是Chameleon) (最后:重发布请注明原作者gonchuki): PS:其实,这个改写的版本源代码我05-9月就已经发在CSDN上了,直到今天才发现,原来CSDN上还有个发软件的地方啊!(我果然已经老年痴呆了啊!)这个控件很多地方还改得不够完善,比如说,控件属性的枚举就没做,还有Transparent风格的按钮类型也没做。因为是改写别人的东东,所以只是想拿出来抛砖引玉,没打算继续开发下去,所以大家板砖千万轻点拍啊!^_^

7,763

社区成员

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

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