第六章 响应鼠标和键盘事件.ppt47
合集下载
《鼠标键盘和OLE》PPT课件

'在图片框中释放鼠标键 If Button = 1 Then Select Case C1 Case 1 Picture1.Line (X1, Y1)-(X, Y) Case 2 Picture1.Line (X1, Y1)-(X, Y), , B End Select End If
End Sub
Private Sub Form_Load() '装载窗体
MousePionter属性的设置值与形状如表9.3所示。
9.1.2 改变鼠标指针
• 表9.3 MousePionter属性值
常数
值
描述
vbDefault
0
VbArrow
1
VbCrosshair
2
VbIbeam
3
VbIconPointer
4
VbSizePointer
5
VbSizeNESW
6
VbSizeNS
C1 = 0 End Sub
9.1.1 鼠标事件
3.MouseMove事件 MouseMove事件是鼠标在屏幕上移动时触发的,窗体和控件都能识别
MouseMove事件, 当鼠标指针在对象的边界范围内时该对象就能接收 MouseMove事件,除非有另一个对象捕获了鼠标。
当移动鼠标时, Button参数对于MouseMove事件与MouseDown和MouseUp事件不同, MouseMove事件的Button值表示所有按键的状态,而MouseDown和MouseUp事件 的Button的值无法检测是否同时按下两个以上的按键。 【例9-2】在图片框中绘制连续的线和方块。 使用MouseMove事件可以连续地画线和方块,当鼠标移动时在不断触发的 MouseMove事件中画线和方块。运行界面如图9.3所示。 程序代码如下。
End Sub
Private Sub Form_Load() '装载窗体
MousePionter属性的设置值与形状如表9.3所示。
9.1.2 改变鼠标指针
• 表9.3 MousePionter属性值
常数
值
描述
vbDefault
0
VbArrow
1
VbCrosshair
2
VbIbeam
3
VbIconPointer
4
VbSizePointer
5
VbSizeNESW
6
VbSizeNS
C1 = 0 End Sub
9.1.1 鼠标事件
3.MouseMove事件 MouseMove事件是鼠标在屏幕上移动时触发的,窗体和控件都能识别
MouseMove事件, 当鼠标指针在对象的边界范围内时该对象就能接收 MouseMove事件,除非有另一个对象捕获了鼠标。
当移动鼠标时, Button参数对于MouseMove事件与MouseDown和MouseUp事件不同, MouseMove事件的Button值表示所有按键的状态,而MouseDown和MouseUp事件 的Button的值无法检测是否同时按下两个以上的按键。 【例9-2】在图片框中绘制连续的线和方块。 使用MouseMove事件可以连续地画线和方块,当鼠标移动时在不断触发的 MouseMove事件中画线和方块。运行界面如图9.3所示。 程序代码如下。
第6章 键盘和鼠标事件

6.1
2019/2/12
2
Visual Basic程序设计教程
6.1 键盘事件
程序运行时,用户进行键盘操作,就会产
生键盘事件,由当前获得焦点的对象,来 响应键盘事件。 本节包括以下内容:
KeyPress事件 6.1.2 KeyDown事件和KeyUp事件
6.1.1
2019/2/12
3
22
Visual Basic程序设计教程
例6-2(语句-1)
程序代码如下:
Dim
BeginNow As Boolean Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) BeginNow = True Form1.DrawWidth = 3 Form1.CurrentX = X ‘设置窗体的当前坐标属性 Form1.CurrentY = Y End Sub
2019/2/12
21
Visual Basic程序设计教程
例6-2(界面)
【例6-2】使用MouseUp、MouseDown和
MouseMove事件,编写一个在窗体上用鼠 标绘图的简单程序。在窗体上按住鼠标按 键,移动鼠标时开始绘画,释放按钮时停 止绘画。程序运行界面如图6-2所示。
2019/2/12
17
Visual Basic程序设计教程
6.2.1 MouseMove事件
参数说明: ① Button参数是表示按下或松开鼠标哪个按键。 Button取值与对应按键描述如表6-3所示。 ② Shift:通过Shift参数表示在按钮被按下或松开的情 况下键盘的Shift、Ctrl和Alt键的状态,它的取值为 0~7的整数,与前面KeyDown、KeyUp事件中的Shift 参数完全相同,如表6-2所示。 ③ 参数X、Y:鼠标指针的位置。X和Y的值是使用该 对象的坐标系统表示鼠标指针当前的位置。
2019/2/12
2
Visual Basic程序设计教程
6.1 键盘事件
程序运行时,用户进行键盘操作,就会产
生键盘事件,由当前获得焦点的对象,来 响应键盘事件。 本节包括以下内容:
KeyPress事件 6.1.2 KeyDown事件和KeyUp事件
6.1.1
2019/2/12
3
22
Visual Basic程序设计教程
例6-2(语句-1)
程序代码如下:
Dim
BeginNow As Boolean Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) BeginNow = True Form1.DrawWidth = 3 Form1.CurrentX = X ‘设置窗体的当前坐标属性 Form1.CurrentY = Y End Sub
2019/2/12
21
Visual Basic程序设计教程
例6-2(界面)
【例6-2】使用MouseUp、MouseDown和
MouseMove事件,编写一个在窗体上用鼠 标绘图的简单程序。在窗体上按住鼠标按 键,移动鼠标时开始绘画,释放按钮时停 止绘画。程序运行界面如图6-2所示。
2019/2/12
17
Visual Basic程序设计教程
6.2.1 MouseMove事件
参数说明: ① Button参数是表示按下或松开鼠标哪个按键。 Button取值与对应按键描述如表6-3所示。 ② Shift:通过Shift参数表示在按钮被按下或松开的情 况下键盘的Shift、Ctrl和Alt键的状态,它的取值为 0~7的整数,与前面KeyDown、KeyUp事件中的Shift 参数完全相同,如表6-2所示。 ③ 参数X、Y:鼠标指针的位置。X和Y的值是使用该 对象的坐标系统表示鼠标指针当前的位置。
鼠标和键盘事件

第14页
5、标签数组的使用 Label[] lblArray; lblArray; lblArray = new Label[] { label1, label4, label5, label4 label5 label6 label7 label8 label6, label7, label8 }; 将所有label1的地方外层加循环 的地方外层加循环, label1改为 将所有label1的地方外层加循环,将label1改为 lblArray[i]
第9页
【打字游戏】 打字游戏】
要使窗体在可以获得焦点的控件之前截获键盘事件, 要使窗体在可以获得焦点的控件之前截获键盘事件, 应该将窗体的KeyPreview属性设为 属性设为true。 应该将窗体的 属性设为 。 (1)窗体的KeyPreview属性设为 )窗体的 属性设为true 属性设为 (2)int score //表示得分 ) 表示得分
第11页
2、标签上文字的获取 假设范围为英文字母A 假设范围为英文字母A—Z。 Random aa=new Random(); label1.Text= ( (char) aa.Next(65,91)).ToString();
第12页
3、键盘事件 private void Form1_KeyPress(object sender, KeyPressEventArgs e) { if (e.KeyChar == char.Parse(label1.Text) || e.KeyChar == char.Parse(label1.Text.ToLower())) { score += 10; label3.Text = score.ToString(); label1.Text = ((char)aa.Next(65, 91)).ToString(); label1.Top = 20问题 1、鼠标的位置 、 2、哪个鼠标按键按动 、
键盘和鼠标事件

注意同时按下多个时shift的值是按下单个值的相加 的值是按下单个值的相加 注意同时按下多个时
说明: 说明: 大部分的按键在VB中都定义了常量, 中都定义了常量 ④大部分的按键在 中都定义了常量,例 键的常量是vbKeyF1,Tab键的常量 如F1键的常量是 键的常量是 , 键的常量 是vbKeyTab,Home键的常量 , 键的常量 vbKeyHome. 这些常量可以代替 这些常量可以代替keycode 的值在程序中直接使用
Shift参数值
十进制数 0 1 2 4 3 5 6 7 二进制数 000 001 010 100 011 101 110 111 转换键状态 没有按下转换键 只按下Shift键 键 只按下 只按下Ctrl键 键 只按下 只按下Alt键 只按下 键 同时按下Shift和Ctrl键 和 同时按下 键 同时按下Shift和Alt键 和 键 同时按下 同时按下Ctrl和Alt键 和 键 同时按下 三个转换键全都按下
Case vbKeyHome: TxtShow.Text = TxtShow.Text & vbCrLf & "按下 & ShiftStatus(Shift) & " 按下" 按下 功能键Home" 功能键 Case vbKeyPageUp: TxtShow.Text = TxtShow.Text & vbCrLf & "按下 & ShiftStatus(Shift) & "功能键 按下" 按下 功能键 PageUp" End Select End Sub
利用KeyPress事件对键盘输入的值取舍。 事件对键盘输入的值取舍。 例如 :利用 事件对键盘输入的值取舍 程序运行后要求输入大写字母, 程序运行后要求输入大写字母,如果输入的是其 它字符就响铃报警,设计界面如下图: 它字符就响铃报警,设计界面如下图:
第6章 Windows应用程序对键盘与鼠标的响应-PPT课件

//输入位置为本行的起始位置
break;
case VK_DELETE:
//处理按下键为Delete时的消息
if(nArrayPos==nNumChar) //输入位置处于本行的末尾
MessageBox(hWnd,
"缓冲区已空,没有字符可供删除",NULL,MB_OK);
else
{
for(x=nArrayPos;x<nNumChar;x=x+1)
若字符缓冲区中已没有任 何字符,此时按下了 Delete键,则出现(5)号错 误提示信息
long WINAPI WndProc(HWND hWnd,UINT iMessage,UINT wParam,LONG lParam)
{
#define BufSize 30
//设置存放字符的缓冲区大小
//设置静态字符数组,存放输入的字符,字符个数不能超出缓冲区大小
操作系统在接收到键盘输入后,还要决定哪一个应用程序将响应输入
Windows系统把消息发送给具有“输入焦点(input focus)的窗口
应用程序一般有几个窗 口,但当按下某一个键 时,只有一个窗口能接 收到该键盘消息,接收 这个键盘消息的窗口称 为有“输入焦点”的窗口
有“输入焦点” 的窗口应是活 动窗口或者活 动窗口的子窗口
12
含义 非系统字符 非系统死字符 系统字符 系统死字符
6.2 键盘操作应用举例
【例6-1】本例演示键盘输入时所产生的消息序列并在窗口的客 户区显示对应的字符。
13
用户窗口区输入“这是一 个有关键盘操作的示例程 序”的字符串
程序中缓冲区大小只设30 个字符,当缓冲区满时若 再输入任何字符,就出现 (1)号错误提示
项目十 鼠标和键盘事件的响应

else if(e.getKeyChar()=='b'||e.getKeyChar()=='B') c=Color.blue;
else c=Color.black;
repaint(); }} public void paint(Graphics g) {
g.setColor(c); g.fillOval(60,60,100,100); } public static void main(String args[]){ new hh(); } }
(4)mouseExited(MouseEvent)方法,鼠标指针离开容器时, 接口监视器发现这个事件后自动调用这个方法。
new hh(); } }
10.2.3 键盘适配器类KeyAdapter
使用KeyListener接口时,即使有些方法不使用也必须在 程序中写出接口的所有方法,因此比较麻烦,而 java.awt.event.keyAdapter类本身就使用了KeyListener接口, 并对接口的三个方法增加了空方法体,因此使用keyAdapter 类时不必像使用接口那样实现所有方法,只需覆盖要响应的 键盘事件方法即可。
④事件监听器监听到事件后,会根据事件的类型调用相应的 事件处理方法。
事件源
产生事 件
事件 1
捕获事件
监视器1
事件 2
监视器2
图10-1 事件处理模型
事件处 理
事件处 理
1.java.awt.event包
(1)文本框回车、按钮单击、计时器、菜单项 引发动作事件:java.awt.event.ActionEvent 处理事件的接口:java.awt.event.ActionListener 接口中的方法:public void actionPerformed(ActionEvent event) (2)单选按钮、多选按钮、下拉列表 引发选项事件:java.awt.event.ItemEvent 处理事件的接口:java.awt.event.ItemListener 接口中的方法:public void itemStateChanged(ItemEvent event)
键盘与鼠标事件ppt课件

第9章 键盘与鼠标事件
1
章节分布
1 键盘事件
2 鼠标事件
2
8.1 键盘事件
KeyPress事件过程 KeyDown事件过程
KeyUp事件过程
键盘事件
3
8.1.1 KeyPress事件过程
• 触发时刻:当按下键盘上某个键时,将触 发KeyPress;
• 服务对象:窗体、复选框、组合框、命令 按钮、列表框、
正确,在MouseMove中,可以对Button进行累加。
MouseMove:If (Button And 3)=3 Then “同时按下左、右两键”
正确,两种情况,同时按左右键或三个键都按下。
13
• 应用举例 • Example 8.4:编写程序,在窗体上画
圆,要求:按着右键移动鼠标,则可以画 圆;否则不能画圆。
Single)
Integer, x As Single, y As
…
{ EndBuStut,即1,按下鼠标左键 010,即2,按下鼠标右键 100,即4,按下鼠标中间键
• - x, y:鼠标光标当前的位置;
12
需要注意的是,在MouseDown和 MouseUp中,Button值不能进行求和,即 Button值只能是3个值中的某一个,它不能 M反ous映eD是ow否n:同If B时ut按ton下=3 了The鼠n “标同时上按的下多左、个右键两键;”对 于MouseMove来错误说,在,Mo可use以Dow通n中过,不B能u对ttBoutnto参n进行数累加。 M判ous断eM按ov下e:一If B个utt或on=同3 T时he按n “下同时多按个下左键、。右两键”
14
• 按下鼠标键事件过程
Sub Form_MouseDown (Button As Integer, Shift
1
章节分布
1 键盘事件
2 鼠标事件
2
8.1 键盘事件
KeyPress事件过程 KeyDown事件过程
KeyUp事件过程
键盘事件
3
8.1.1 KeyPress事件过程
• 触发时刻:当按下键盘上某个键时,将触 发KeyPress;
• 服务对象:窗体、复选框、组合框、命令 按钮、列表框、
正确,在MouseMove中,可以对Button进行累加。
MouseMove:If (Button And 3)=3 Then “同时按下左、右两键”
正确,两种情况,同时按左右键或三个键都按下。
13
• 应用举例 • Example 8.4:编写程序,在窗体上画
圆,要求:按着右键移动鼠标,则可以画 圆;否则不能画圆。
Single)
Integer, x As Single, y As
…
{ EndBuStut,即1,按下鼠标左键 010,即2,按下鼠标右键 100,即4,按下鼠标中间键
• - x, y:鼠标光标当前的位置;
12
需要注意的是,在MouseDown和 MouseUp中,Button值不能进行求和,即 Button值只能是3个值中的某一个,它不能 M反ous映eD是ow否n:同If B时ut按ton下=3 了The鼠n “标同时上按的下多左、个右键两键;”对 于MouseMove来错误说,在,Mo可use以Dow通n中过,不B能u对ttBoutnto参n进行数累加。 M判ous断eM按ov下e:一If B个utt或on=同3 T时he按n “下同时多按个下左键、。右两键”
14
• 按下鼠标键事件过程
Sub Form_MouseDown (Button As Integer, Shift
键盘与鼠标响应-PPT课件

VK_BACK VK_TAB VK_RETURN VK_CONTROL VK_PAUSE VK_ESCAPE VK_NEXT VK_HOME VK_RIGHT VK_DOWN VK_A~VK_Z
退格键 制表键 回车键 Ctrl键 Pause键 Esc键 PageDown键 Home键 右箭头键 下箭头键 A~Z键
键盘消息
按键消息
系统按键消息 非系统按键消息
字符消息
系统字符消息 非系统字符消息
按键消息
当用户按下或松开一个键时产生按键消息。 系统按键消息:
使用Alt键与相关输入键产生的消息。由 windows系统内部直接处理,应用程序不必 处理。
WM_SYSKEYDOWN WM_SYSKEYUP
按下系统键 松开系统键
static int nYChar[Y]={0,0,0,0,0};
static int nNumChar[Y]={0,0,0,0,0}; static int nTextStartX[Y]={0,0,0,0,0}; static int nTextStartY[Y]={0,0,0,0,0};
static SIZE size[Y]; static int n=0;
非系统按键消息:
不使用Alt键组合的按键消息,由应用程 序处理,例如:Home,End,上、下、左、右移 动键。
WM_KEYDOWN WM_KEYUP
按下非系统键 松开非系统键
lParam表示的含义常用的有四位:
0~15位:重复计数位。当键一直被按着时, 计算按键次数 29位:标识该键是否与Alt键一同被按下。 30位:标识键的先前状态 31位:标识键被按下还是被松开。 按键消息的wParam包含了识别按下的键 的虚拟码。