陈 超
[摘要]通过编程的方式实现一个键鼠状态实时显示工具,该工具可以在虚拟键盘和虚拟鼠标上实时显示教师的操作,解决在教学过程教师与学生之间的信息不对称及理论与实际操作相脱节的问题,同时还探讨下一步所要研究的内容。
[关键词]实时显示 图形化窗口 多媒体教学
中图分类号:TP3献标识码:A文章编号:1671-7597(2009)0810069-01
一、引言
在讲授计算机操作类知识时,教师经常会有这样的体会:对于一些实际操作,学生在课堂上似乎已经完全掌握,但在上机实验时却问题百出。之所以出现这样的问题,并不是教师没有认真备课,也不是学生在课堂上没有认真听讲,而是在教师与学生之间出现了信息不对称的问题。教师在讲授某个具体操作时,面对的是实体键盘、实体鼠标,常常会忽视学生面前没有键盘、鼠标这一事实,这时即使教师讲解得非常详细,学生也很难将操作步骤与实际的操作手法联系在一起。为解决这一问题,本文通过编程的方式实现了一个键鼠状态实时显示工具,该工具可以将教师的每个操作都实时地显示在虚拟键盘和虚拟鼠标上,学生可以在记住操作步骤的同时也记住对应的操作手法。该工具的实现过程详述如下。
二、键鼠状态实时显示工具的实现过程
为了监控系统的键盘、鼠标状态,开发时首先注册了WH_KEYBOARD及WH_MOUSE两个系统挂钩。其中,WH_MOUSE系统挂钩负责鼠标信息的预处理,在这里鼠标信息将被转发到图形化窗口;WH_KEYBOARD系统挂钩负责键盘信息的预处理,用于监控教师的每个按键操作,在这里对Windows系统中的组合键进行了特殊处理,如在监控复制组合键“Ctrl+C”、粘贴组合键“Ctrl+V”时,除了监控正常的键位信息外,还要记录系统功能键的实时状态,其实现代码如下:
BOOL bCtrlKeyDown = GetAsyncKeyState(VK_CONTROL)>>((sizeof(S
HORT) * 8) - 1);
BOOL bAltKeyDown = GetAsyncKeyState(VK_MENU)>>((sizeof(SHORT)
* 8) - 1);
BOOL bShiftKeyDown = GetAsyncKeyState(VK_SHIFT)>>((sizeof(SH
ORT) * 8) - 1);
if (lParam >= 0)
{
HWND hWnd = ::FindWindow(NULL, "键鼠状态实时显示工具");
if (::IsWindow(hWnd))
{
LPARAM lpMap = 0;
if (bCtrlKeyDown)
lpMap |= CTRL_MAP;
if (bAltKeyDown)
lpMap |= ALT_MAP;
if (bShiftKeyDown)
lpMap |= SHIFT_MAP;
::PostMessage( hWnd, WM_MYKEY, wParam,lpMap);
}
}
在这里,首先使用GetAsyncKeyState函数分别获取了Ctrl、Alt、Shift键的当前状态,并保存在bCtrlKeyDown、bAltKeyDown、bShiftKeyDo
wn变量中,然后将这三个变量组合后连同普通键位信息一起转发到图形化窗口。
当图形化窗口接收到传递过来的键盘、鼠标信息后,就可以做出相应的处理,在这里有两种处理方案:1.一种方案是每次收到键鼠信息后,图形化窗口立刻进行处理。这种方案能实现真正意义上的实时显示,但是如果教师对键盘、鼠标的操作很频繁,大量转发过来的键鼠消息将会阻碍图形化窗口对其它消息的处理,计算机的响应速度有可能会变慢;2.另一种方案是每次收到键鼠信息后,只替换原有的信息存档,而每隔一定的时间间隔,再从信息存档中取出键鼠信息进行显示。当时间间隔设置得较小时,这种方案的显示效果同方案一的显示效果基本没有区别,同时还将避免占用过多的CPU处理时间。本文中的键鼠状态实时显示工具基于第二种方案进行实现,其流程图如图1所示。
三、键鼠状态实时显示工具的应用实例
本文所实现的键鼠状态实时显示工具已在教学实践中得到了应用,并收到了良好的反馈。图2展示的是其图形化窗口,该窗口可被摆放在屏幕的任何位置,并可设置为最前端显示窗口。在讲解复制操作时,如果教师按下了“Ctrl+C”组合键,则虚拟键盘上的相应键位将高亮显示,如图2(a)所示。如果教师在操作过程中按下了鼠标左键,则虚拟鼠标上的左键也将被高亮显示,如图2(b)所示。基于该工具,学生在课堂上仿佛也直接面对着键盘和鼠标,教学效果大为改善。
四、结语
本文所开发的键鼠状态实时显示工具虽然已部分解决了在课堂教学过程中,教师与学生之间信息不对称及理论与实际操作相脱节的问题,还仍然存在着一些需要进一步研究的内容。如现在的图形化界面会遮挡住屏幕的部分区域,有时会影响教师的操作,下一步可以将其设置为半透明模式,这样既能实时显示键鼠状态,又不会影响教师的操作。同时还可以将教师的操作记录下来并保存为文件,学生在课下可以通过播放该文件进行相关操作的自学。
参考文献:
[1]刘静华、王永生等,计算机绘图[M].北京:高等教育出版社,2006.5.