微波EDA网,见证研发工程师的成长!
首页 > 测试测量 > 测试测量技术文库 > LabWindows/CVI虚拟仪器设计技术场景与游戏设计之: 打蜜蜂

LabWindows/CVI虚拟仪器设计技术场景与游戏设计之: 打蜜蜂

时间:11-13 来源:3721RD 点击:

为:

int InstallPopup (int Panel_Handle);

一般来说,在Windows 应用程序中,对话框分为模态对话框和非模态对话框两种。二者的区别在于当对话框打开时,是否允许用户进行其他对象的操作。模态对话框(Modal Dialogue Box, 又称模式对话框),是指在用户要操作对话框以外的窗口时,必须首先响应该对话框,如单击确定或取消按钮等关闭对话框。非模态对话框(Nonmodal Dialogue Box ,又称无模式对话框),与模态对话框不同,当用户打开非模态对话框时,依

然可以操作其他窗口。

⑥ 按键处理

在本例程中,按键处理采用异步定时器查询方式,需要将定时器的触发时间设置极短,这样会占用大量系统资源。另外,也可以停止异步定时器,采用LabWindows/CVI 事件响应机制,在面板回调函数panelCB 中添加EVENT_KEYPRESS 事件代码,程序如下:

int CVICALLBACK panelCB (int panel, int event, void *callbackData,
int eventData1, int eventData2)
{
int character;
int vk;
switch (event)
{
case EVENT_KEYPRESS:
// 获得虚拟键↑↓←→的按键状态,以及是否按下a 键
vk = GetKeyPressEventVirtualKey (eventData2);
character = GetKeyPressEventCharacter (eventData2);
switch (vk)
{
case VAL_LEFT_ARROW_VKEY:
SetCtrlAttribute (panelHandle, PANEL_PICTURE_GUN, ATTR_LEFT, gun.left–10);
break;
case VAL_RIGHT_ARROW_VKEY:
SetCtrlAttribute (panelHandle, PANEL_PICTURE_GUN, ATTR_LEFT, gun.left+10);
break;
case VAL_UP_ARROW_VKEY:
SetCtrlAttribute (panelHandle, PANEL_PICTURE_GUN, ATTR_TOP, gun.top–10);
break;
case VAL_DOWN_ARROW_VKEY:
SetCtrlAttribute (panelHandle, PANEL_PICTURE_GUN, ATTR_TOP, gun.top+10);
break;
}
if (('a' == tolower (character)) && (!shootflag))

{
SetCtrlAttribute (panelHandle, PANEL_PICTURE_BULLET, ATTR_LEFT, gun.left+
gun.width/2–8);
SetCtrlAttribute (panelHandle, PANEL_PICTURE_BULLET, ATTR_TOP, gun.top);
SetCtrlAttribute (panelHandle, PANEL_PICTURE_BULLET, ATTR_VISIBLE, 1);
sndPlaySound("bullet.wav", SND_SYNC);
shootflag = 1;
}

以上程序中,获得虚拟键值和字符可以用GetKeyPressEventVirtualKey 和GetKeyPress

EventCharacter 函数,也可以采用EVENT_KEYPRESS 事件的eventData1 参数获得相关数据,即将以上两个函数用以下代码代替。

vk = eventData1 & 0xFF00;

character = eventData1 & 0x00FF;

(4)运行效果图

点击工具栏中的Debug Project 按钮,程序开始运行,其效果如图4-19 所示。

图4-19 运行效果图

相关阅读

《虚拟仪器技术,将"软件就是仪器"进行到底!》

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top