📄 sample4.c
字号:
#include <analysis.h>
#include <ansi_c.h>
#include <cvirte.h>
#include <userint.h>
#include "sample4.h"
static int panelHandle;
int main (int argc, char *argv[])
{
if (InitCVIRTE (0, argv, 0) == 0)
return -1;
if ((panelHandle = LoadPanel (0, "sample4.uir", PANEL)) < 0)
return -1;
DisplayPanel (panelHandle);
RunUserInterface ();
return 0;
}
int CVICALLBACK PanelCallback (int panel, int event, void *callbackData,
int eventData1, int eventData2)
{
switch (event)
{
case EVENT_CLOSE:
QuitUserInterface (0);
break;
}
return 0;
}
int CVICALLBACK RunPopup (int panel, int control, int event,
void *callbackData, int eventData1, int eventData2)
{
int i,k,status,filenumber,popuppanel;
char title[10],message[20],result[MAX_PATHNAME_LEN],**multifileresult,*multifilename;
double xarray[100],yarray[100];
int bold, underline,strikeout, italic, justification, textcolor,fontsize;
switch (event)
{
case EVENT_COMMIT:
//得到POPUPTYPE、TITLE、MESSAGE控件中的值
GetCtrlVal (panel, PANEL_POPUPTYPE, &i);
GetCtrlVal (panel, PANEL_TITLE, title);
GetCtrlVal (panel, PANEL_MESSAGE, message);
//判断POPUPTYPE控件的值,运行不同的对话框
switch (i)
{
case 0:
//消息对话框
status=MessagePopup (title, message);
break;
case 1:
//确认对话框
status=ConfirmPopup(title, message);
break;
case 2:
//提示对话框
status = PromptPopup (title, message, result, 250);
//将输入的字符串显示到文本框控件
ResetTextBox (panel, PANEL_RESULT, result);
break;
case 3:
//通用消息框
status = GenericMessagePopup (title, message, "Enter", "Active",
"Escape", result, 200, 0,
VAL_GENERIC_POPUP_BTN1,
VAL_GENERIC_POPUP_BTN2,
VAL_GENERIC_POPUP_BTN3);
//将输入的字符串显示到文本框控件
ResetTextBox (panel, PANEL_RESULT, result);
break;
case 4:
//文件选择框,设置默认目录为D:\cvi,选择文件类型为txt文件
//或者doc文件,默认文件类型为txt文件,注意参数输入格式
status = FileSelectPopup ("d:\\cvi", "*.txt", "*.txt;*.doc", title, VAL_OK_BUTTON, 0, 0,
1, 0, result);
//如果终止文件选择,退出
if(status<=0) break;
//将得到的文件名显示到文本框控件
ResetTextBox (panel, PANEL_RESULT, result);
break;
case 5:
//多文件选择框
status = MultiFileSelectPopup ("", "*.*", "", title, 0, 0, 1,
&filenumber, &multifileresult);
//得到的结果filenumber表示所选择文件数,
//multifileresult为指向filenumber个字符串的指针,
//由函数MultiFileSelectPopup自动分配内存
if(status<=0) break;
//处理字符串
multifilename=(char*)malloc (sizeof(char)*MAX_PATHNAME_LEN*filenumber);
strcpy (multifilename, "");
for(k=0;k<filenumber;k++)
{
if(multifileresult[k]==NULL) break;
strcat (multifilename, multifileresult[k]);
strcat (multifilename, "\n");
}
//将所得到的结果处理后显示到文本框控件
ResetTextBox (panel, PANEL_RESULT, multifilename);
//释放内存
free(multifilename);
free(multifileresult);
break;
case 6:
//路径选择框
status = DirSelectPopup ("", title, 1, 1, result);
if(status<=0) break;
//将路径显示到文本枯哪个控件
ResetTextBox (panel, PANEL_RESULT, result);
break;
case 7:
//生成一正弦信号,存放在xarray数组中
SinePattern (100, 1.0, 0.0, 3, xarray);
//显示X轴向的图表对话框
status = XGraphPopup (title, xarray, 100, VAL_DOUBLE);
break;
case 8:
//生成一正弦信号,存放在yarray数组中
SinePattern (100, 1.0, 0.0, 3, yarray);
//显示Y轴向的图表对话框
status = YGraphPopup (title, yarray, 100, VAL_DOUBLE);
break;
case 9:
//生成两个正弦信号,分别存放在xarray,yarray数组中
SinePattern (100, 1.0, 90, 2, xarray);
SinePattern (100, 1.0, 0.0, 3, yarray);
// 显示XY双轴向的图表对话框
status = XYGraphPopup (title, xarray, yarray, 100, VAL_DOUBLE,
VAL_DOUBLE);
break;
case 10:
//显示生成一正弦信号,存放在yarray数组中
SinePattern (100, 1.0, 0.0, 3, yarray);
//波形图表对话框
status = WaveformGraphPopup (title, yarray, 100, VAL_DOUBLE, 1.0, 0.0,
0.0, 1.0);
break;
case 11:
//给字体选择框设置初始值
bold=0; //粗体
underline=0; //下划线
strikeout=0; //中划线
italic=0; //斜体
justification=0; //对齐方式
textcolor=0; //颜色
fontsize=16; //大小
strcpy(result,"Impact"); //字体
//显示字体选择对话框
status = FontSelectPopup (title, message, 0, result, &bold,
&underline, &strikeout, &italic,
&justification, &textcolor, &fontsize, 12,
48, 1, 1);
//显示字体名称
ResetTextBox (panel, PANEL_RESULT, result);
//显示返回值
SetCtrlVal (panel, PANEL_STATUS, status);
break;
case 12:
//加载面板
popuppanel = LoadPanel (0, "sample4.uir", PANEL_2);
//安装对话框
InstallPopup (popuppanel);
//获取系统对话框属性,并设置控件的属性
GetSystemPopupsAttribute (ATTR_MOVABLE, &i);
SetCtrlVal (popuppanel, PANEL_2_CHECKBOX, i);
break;
}
//显示返回值
SetCtrlVal (panel, PANEL_STATUS, status);
break;
}
return 0;
}
int CVICALLBACK QuitCallback (int panel, int control, int event,
void *callbackData, int eventData1, int eventData2)
{
int i;
switch (event)
{
case EVENT_COMMIT:
//判断发生事件的面板
if(panel!=panelHandle)
{
//如果面板句柄不是主面板句柄,则为对话框发生事件
GetCtrlVal (panel, PANEL_2_CHECKBOX, &i);
SetSystemPopupsAttribute (ATTR_MOVABLE, i);
//移除对话框
RemovePopup (0);
}
else
{
QuitUserInterface (0);
}
break;
}
return 0;
}
int CVICALLBACK CopyText (int panel, int control, int event,
void *callbackData, int eventData1, int eventData2)
{
char *text;
int length;
switch (event)
{
case EVENT_COMMIT:
//得到TEXTTOCOPY控件中字符串的长度
GetCtrlAttribute (panel, PANEL_TEXTTOCOPY, ATTR_STRING_TEXT_LENGTH,
&length);
length = length + 1;
//分配内存
text = (char *)malloc(length);
if(text!=NULL)
{
//获取TEXTTOCOPY控件的值
GetCtrlVal (panel, PANEL_TEXTTOCOPY, text);
//向粘贴板拷贝文本格式数据
ClipboardPutText (text);
free(text);
}
break;
}
return 0;
}
int CVICALLBACK CopyBitmap (int panel, int control, int event,
void *callbackData, int eventData1, int eventData2)
{
int status,bitmap;
switch (event)
{
GetPanelDisplayBitmap (panel, VAL_FULL_PANEL, VAL_ENTIRE_OBJECT,
&bitmap);
case EVENT_COMMIT:
//获取控件的显示部分并转换成位图
status = ConfirmPopup ("Confirm", "Include title?");
//向粘贴板拷贝位图格式数据
GetCtrlDisplayBitmap (panel, PANEL_TEXTTOCOPY, status, &bitmap);
//删除位图
ClipboardPutBitmap (bitmap);
break;
}
return 0;
}
int CVICALLBACK Paste (int panel, int control, int event,
void *callbackData, int eventData1, int eventData2)
{
char *text;
int i,bitmap;
switch (event)
{
case EVENT_COMMIT:
//以文本格式取出粘贴板的数据
ClipboardGetText (&text, &i);
if(i)
//如果数据是文本格式,就显示到PASTEDTEXT控件
ResetTextBox (panel, PANEL_PASTEDTEXT, text);
//以位图格式取出粘贴板的数据
ClipboardGetBitmap (&bitmap, &i);
if(i)
{
//如果数据是位图格式,就显示到PASTEDBITMAP控件
CanvasClear(panel, PANEL_PASTEDBITMAP, VAL_ENTIRE_OBJECT);
CanvasDrawBitmap (panel, PANEL_PASTEDBITMAP, bitmap,
VAL_ENTIRE_OBJECT, VAL_ENTIRE_OBJECT);
//删除位图
DiscardBitmap(bitmap);
}
break;
}
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -