VB中如何使键盘的按键与程序中的按键相关联?
有感于微软的系统计算器,本人最近也写了一个计算器,现在有个问题,就是如何能让键盘的数字键与计算器中的数字键相关联呢。研究了很久也没有解决,请大家帮帮忙啊 问题点数:20、回复次数:7Top
1 楼happy_sea(开心海(数据读取中,请稍候......))回复于 2004-12-03 22:02:07 得分 10
声明:
Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Public Const WM_LBUTTONDOWN = &H201
Public Const WM_LBUTTONUP = &H202
代码:
SendMessage Command1.hwnd, WM_LBUTTONDOWN, 0, 0
SendMessage Command1.hwnd, WM_LBUTTONUP, 0, 0
为了让效果明显一点,可以在两句之间加点延时。Top
2 楼nmtao(西拉木伦)回复于 2004-12-04 21:16:41 得分 0
能够具体讲解一下吗Top
3 楼happy_sea(开心海(数据读取中,请稍候......))回复于 2004-12-04 21:56:05 得分 2
比如在Text1中输入数字与表达式,用cmdNumber(0~9)来输入0~9这几个数字,cmdAdd来输入加号,那么你可以在Text1的keypress事件中:
Private Sub Text1_KeyPress(KeyAscii As Integer)
Select Case KeyAscii '根据KeyAscii进行判断
Case 48 To 57 '数字0~9的Ascii值
SendMessage cmdNumber(KeyAscii - 48).hwnd, WM_LBUTTONDOWN, 0, 0
'此处可以加点延时措施
SendMessage cmdNumber(KeyAscii - 48).hwnd, WM_LBUTTONUP, 0, 0
Case 43 '加号的Ascii值
End Select
Text1.SetFocus '使Text1重新得到焦点以便继续输入
End Sub
Top
4 楼wwqna(york)回复于 2004-12-04 22:30:26 得分 3
可以在楼上的基础上再改一下,根本就不要用sendmessage,执行相应程序就序就行,剩下的你就是改它状态就可以了。这样你还可以+-*/也关联起来,
另外用一timer使textbox一直获取消息。Top
5 楼nmtao(西拉木伦)回复于 2004-12-05 09:07:38 得分 0
SendMessage cmdNumber(KeyAscii - 48).hwnd, WM_LBUTTONDOWN, 0, 0
这句话具有什么功能啊。Top
6 楼wwqna(york)回复于 2004-12-05 10:39:06 得分 2
这就相当于按下某一个数字键Top
7 楼happy_sea(开心海(数据读取中,请稍候......))回复于 2004-12-05 11:10:15 得分 3
SendMessage cmdNumber(KeyAscii - 48).hwnd, WM_LBUTTONDOWN, 0, 0
这句向cmdNumber(...)这个按钮发送一个消息,作用跟你在按钮上按下鼠标左键是一样的。Top




