www.pudn.com > LabWindowsCVI.rar > sample10.c


#include 		 
#include  
#include  
#include  
#include 											 
#include "sample10.h" 
#include "cviogl.h" 
#include "animate.h" 
 
#define PI 3.1415926 
#define RAD(x)          ((x)*PI/180.0) 
#define NUM_STEPS  57    
 
//定义变量 
static int panelHandle,oglControl; 
static double angle=0; 
char    Path[NUM_STEPS * 30];     
 
//自定义函数 
static int SetOGLAttributes(void); 
int Plot3D (int panel); 
void GeneratePath(void); 
 
int main (int argc, char *argv[]) 
{ 
	if (InitCVIRTE (0, argv, 0) == 0)	 
		return -1;	 
		 
	if ((panelHandle = LoadPanel (0, "sample10.uir", PANEL)) < 0) 
		return -1; 
		 
    //创建OpenGL控件 
    oglControl = OGLConvertCtrl (panelHandle, PANEL_PICTURE); 
     
    //设置OpenGL控件属性 
    SetOGLAttributes(); 
     
    //在OpenGL控件上作三维图形 
    Plot3D(panelHandle); 
     
    //创建动画控件 
    AnimateCtrl_ConvertFromPictRing (panelHandle, PANEL_PICTURERING); 
	 
    //设置动画控件两帧之间的时间间隔  
    AnimateCtrl_SetAttribute (panelHandle, PANEL_PICTURERING, 
							  ATTR_ANIMATE_FRAME_INTERVAL, 1); 
							   
    //产生动画控件的路径 
    GeneratePath(); 
     
    //设置动画控件路径 
    AnimateCtrl_SetAttribute (panelHandle, PANEL_PICTURERING, 
							  ATTR_ANIMATE_PATH, Path);   
							   
    //设置动画控件有效属性为FALSE 
    AnimateCtrl_SetAttribute (panelHandle, PANEL_PICTURERING, 
							  ATTR_ANIMATE_ENABLED, 0);  
							   
    //设置动画控件播放至路径末时停止播放 
    AnimateCtrl_SetAttribute (panelHandle, PANEL_PICTURERING, 
							  ATTR_ANIMATE_STOP_AT_PATH_END, 1);  
							   
 
	DisplayPanel (panelHandle); 
	RunUserInterface (); 
	 
    //删除OpenGL控件 
    OGLDiscardCtrl (panelHandle, oglControl); 
	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 QuitCallback (int panel, int control, int event, 
		void *callbackData, int eventData1, int eventData2) 
{ 
	switch (event) 
		{ 
		case EVENT_COMMIT: 
		 
			QuitUserInterface (0); 
			 
			break; 
		} 
	return 0; 
} 
 
int CVICALLBACK AddFile (int panel, int control, int event, 
		void *callbackData, int eventData1, int eventData2) 
{ 
     int status,filenumber,k,count; 
     char **multifileresult,*multifilename; 
      
     switch (event) 
		{ 
		case EVENT_COMMIT: 
		 
	         //打开多文件选择框 
	         status = MultiFileSelectPopup ("c:\\windows\\media", "*.wav", "", 
									"Add File", 0, 1, 1, &filenumber, 
									&multifileresult); 
             if(status<=0)  break; 
              
             //获取FILELIST控件包含的项目数 
             GetNumListItems (panel, PANEL_FILELIST, &count); 
              
             //添加文件名 
             for(k=count;k10) 
			{ 
			  frame=frame-10; 
			} 
        path += sprintf(path, "(T=%d, L=%d, F=%d) ", y, x, frame); 
        y += 8; 
       } 
}