• 易迪拓培训,专注于微波、射频、天线设计工程师的培养
首页 > 测试测量 > 技术文章 > LabWindows/CVI虚拟仪器设计技术场景与游戏设计之: 打字练习

LabWindows/CVI虚拟仪器设计技术场景与游戏设计之: 打字练习

录入:edatop.com    点击:

(3)  程序注释

① InitChar 自定义函数随机产生下落字符。函数原型为:

int InitChar (int choice); 

choice :选择参数,0 为设置PANEL_TEXTMSG 控件,1 为设置PANEL_TEXTMSG_1 控件。

设置两个下落字符属性,将Text Message 控件Tab Order 依次相连,通过设置choice 参数来确定控件。

在LabWindows/CVI 中,函数的定义都是相互平行、相互独立的,也就是说在函数定义时,函数体内不能包含另一个函数的定义,即函数不能嵌套定义,但可以嵌套调用。如:

SetCtrlAttribute (panelHandle, PANEL_TEXTMSG+choice, ATTR_LEFT, CWidth * (int)(Random (97, 123)–97)/27); 

嵌套函数是指在某些情况下,将某一函数作为另一函数的参数使用,这一函数就是嵌套

函数。本例中,Random 函数就是嵌套函数。此外,如果不采用PANEL_TEXTMSG + choice 形式,可以将InitChar 函数进行改写:

int InitChar (int choice)
{
int CTop;
int CWidth;
char str[2] = {0x00, 0x00};
GetCtrlAttribute (panelHandle, PANEL_BACKGROUND, ATTR_WIDTH, &CWidth);
GetCtrlAttribute (panelHandle, PANEL_BACKGROUND, ATTR_TOP, &CTop);
//产生随机字符
SetRandomSeed (0);
str[0] = Random (97, 123);
switch (choice)
{
case 0:
SetCtrlAttribute (panelHandle, PANEL_TEXTMSG, ATTR_LEFT, CWidth * (int)(Random
(97, 123) – 97) / 27);
SetCtrlAttribute (panelHandle, PANEL_TEXTMSG, ATTR_TOP, CTop);
SetCtrlVal (panelHandle, PANEL_TEXTMSG, str);
break;
case 1:
SetCtrlAttribute (panelHandle, PANEL_TEXTMSG_1, ATTR_LEFT, CWidth * (int)
(Random (97, 123) – 97) / 27);

SetCtrlAttribute (panelHandle, PANEL_TEXTMSG_1, ATTR_TOP, CTop);
SetCtrlVal (panelHandle, PANEL_TEXTMSG_1, str);
break;
}
return 0;
}
 

② 面板EVENT_KEYPRESS 事件说明

在面板的EVENT_KEYPRESS 事件中,每个if 语句体最后都加入了break ,主要是为了在执行完成一次击键事件后能够退出,防止出现落下两个相同字母后击一次键而全部消除的错误。

③ GenericMessagePopup 函数

显示一个用户自定义提示信息和按钮的对话框。可设置提示信息和三个Command Button 标题内容。函数原型为:

int GenericMessagePopup (char Title[], char Message[], char Button_Label_1[], char Button_Label_ 2[], char Button_Label_3[], char Response_Buffer[], int Max_Response_Length, int Button_Alignment, int Active_Control, int Enter_Button, int Escape_Button); Title[] :标题字符串。Message[]:提示信息。如果需要显示多行信息,可用"n"换行。Button_Label_1[] :按钮1 标题。Button_Label_2[] :按钮2 标题,输入0 隐藏该按钮。Button_Label_3[] :按钮3 标题,输入0 隐藏该按钮。 
Response_Buffer[] :用户输入字符缓冲区,为用户输入数据长度加上1 个NULL 字符。输入0 隐藏该按钮。 
Max_Response_Length :最大允许输入字符长度。Button_Alignment :输入0 表示按钮排列在对话框底部,输入1 表示排列在对话框右侧。Active_Control : 处于激活状态的按钮或输入框,可以取值包括VAL_GENERIC_POPUP_BTN1 、 
VAL_GENERIC_POPUP_BTN2 、VAL_GENERIC_POPUP_BTN3 、VAL_GENERIC_POPUP_  
INPUT_STRING 。 
Enter_Button: 当按下回车键时响应的按钮。不响应该按键,可输入VAL_GENERIC_POPUP_  
NO_CTRL 。 
Escape_Button:当按下ESC 键时响应的按钮。不响应该按键,可输入VAL_GENERIC_POPUP_ NO_CTRL 。 
返回值:返回按下的按钮值,1 表示VAL_GENERIC_POPUP_BTN1,2 表示VAL_GENERIC_  
POPUP_BTN2,3 表示VAL_GENERIC_POPUP_BTN3 。

(4)运行效果图

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

图4-12 运行效果图

 

相关阅读

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

点击浏览:矢量网络分析仪、频谱仪、示波器,使用操作培训教程

上一篇:基于模块化设计的R&S BTC可优化执行各种测试任务
下一篇:怎样采用多种单端信号驱动低功率、1Msps、±2.5V 差分输入、16 位 ADC

微波射频测量操作培训课程详情>>
射频和天线工程师培训课程详情>>

  网站地图