
因为vbShiftMask,vbCtrlMask,vbAltMask是按位排列的,即2^n(n=0,1,2),分别为1,2,4,像这种情况,程序处理的时候就要用到位运算符(And)来处理这种数据。这个程序可以简化,你看看下面的。组合键情况显示在窗体Caption里。
代码如下。
=====================
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
Dim s As String
If (Shift And vbShiftMask) = vbShiftMask Then s = s & "SHIFT" & " "
If (Shift And vbCtrlMask) = vbCtrlMask Then s = s & "CTRL" & " "
If (Shift And vbAltMask) = vbAltMask Then s = s & "ALT" & " "
Caption = s
End Sub
这个确实很简单,你的键值用以为数码管就可以显示,可见你的按键个数不超过16个,但是不知道你的按键排列是怎么样,是独立式还是行列式,就是你的按键是占用16个io口还是4个,也不知道你是用要c程序还是汇编程序,我要修周末了,周一上班,如果周一还没解决可以给我发邮件,lx19840607@hotmailcom,也可以发消息给我
简单说一下,你要搞清楚你的数码管是共阴还是共阳,写一个数码管的驱动程序,可以一直循环,去查找有没有按键按下,没有就显示数据,有的话,就改变一下要显示的数据,然后循环显示
while(1)
{
while(没有键按下)
{
显示第一位数
显示第二位数
}
查找是那个按键被按下,得到键值
更改要显示的数据
}
如果你不知道怎么获得键值,建议你看一看单片机原理与接口技术,清华大学出版社,学校学单片机都用这本教材,相信你手上也有,第282页开始
反正解决不了就发邮件吧, 告诉我你QQ也行
void _Key(void)
{
if(!Key) //有按键按下
{
Delay(500); 延时
if(!Key) //还是按下状态,即长击
{
Disp("2");
}
else //否则就是短击
{
Disp("1");
}
}
else //没有按键按下
{
Disp("3");
}
}
大概思路是这样,延迟函数自己掌握,一般还要加消抖(也就是较短的延时后再判断一次按键状态)
//我不知道你的具体要求,将响应事件设为在输入后按回车
import javaawt;
import javaawtevent;
import javaxswing;
class Huida//自定义组件
{ JFrame f;//声明一个视窗组件对象
Container c;//声明一个中间层组件面板
JTextField jtf1,jtf2,jtf3;//声明一个单行文本框
JButton b,b1;//声明一个按钮组件对象
JLabel text;
public void creatInterface()
{ // int m=0;
f=new JFrame("计算器");//实例化顶层
c=fgetContentPane();//添加中间层到视窗组件
csetLayout(new FlowLayout());//布局管理器
jtf1=new JTextField("",10);//10列
jtf1setEditable(true);//设置文本框属性为可以编辑
jtf1setHorizontalAlignment(JTextFieldRIGHT );//设置文本框内容右对齐
jtf2=new JTextField("",10);//10列
jtf2setEditable(true);//设置文本框属性为可以编辑
jtf2setHorizontalAlignment(JTextFieldRIGHT );
text=new JLabel("");
jtf1addActionListener(
new ActionListener()//匿名内部类
{public void actionPerformed(ActionEvent e)
{ for(int i=0;i<jtf1getText()length();i++)
{
char ch=jtf1getText()charAt(i);//返回组成jtf1的每个字符
if(CharacterisDigit(ch))
{ jtf2requestFocus(true);
textsetText("输入正确");
}
else
{ jtf1requestFocus(true);
textsetText("请输入数字");
}}
}});
jtf2addActionListener(
new ActionListener()//匿名内部类
{public void actionPerformed(ActionEvent e)
{ for(int i=0;i<jtf2getText()length();i++)
{
char ch=jtf2getText()charAt(i);//返回组成jtf2的每个字符
if(CharacterisDigit(ch))
{ brequestFocus(true);
textsetText("输入正确");}
else
{ jtf2requestFocus(true);
textsetText("请输入数字");
}}
}});
b=new JButton("确定");
b1=new JButton("重置");
baddActionListener(
new ActionListener()//匿名内部类
{public void actionPerformed(ActionEvent e)
{
}
});
b1addActionListener(
new ActionListener()//匿名内部类
{public void actionPerformed(ActionEvent e)
{ jtf1setText("");
jtf2setText("");
textsetText("");}
});
cadd(jtf1);//添加文本框到中间层
cadd(jtf2);//添加文本框到中间层
cadd(text);
cadd(b);//添加按钮到中间层
cadd(b1);//添加按钮到中间层
csetBackground(Colorblue);//设置背景颜色
fsetSize(400,200);//设置大小
fsetResizable(false);
fsetVisible(true);//设置为可见
}
public static void main(String args[])
{
Huida m=new Huida();
mcreatInterface();
}
}
以上就是关于VB一个简单的键盘按键响应程序全部的内容,包括:VB一个简单的键盘按键响应程序、单片机按键程序、求关于单片机按键的程序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)