⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sample9_1.c

📁 CVI例程
💻 C
字号:
#include "cvi.h"#include <utility.h>#include <cvirte.h>  #include "sample9_1.h"static CAObjHandle  CVIObj = 0;static int  panel = 0;static void MessagePopupCAError(int status);static void MessagePopupCVIError(int status);static void GetError(int hresult,int retVal);  int main (int argc, char *argv[]){    HRESULT hresult = 0;    int retVal = 0;      if (InitCVIRTE (0, argv, 0) == 0)           return -1;    if ((panel = LoadPanel (0, "sample9_1.uir", PANEL)) < 0)        return -1;       DisplayPanel (panel);    RunUserInterface();       DiscardPanel (panel);    return 0;}int CVICALLBACK LaunchCVI (int panel, int control, int event, void *callbackData,    int eventData1, int eventData2){    HRESULT hresult = 0;      switch (event) {        case EVENT_COMMIT:            SetWaitCursor(1);            hresult = CVI_NewApp (NULL, &CVIObj);            SetWaitCursor(0);            if (hresult)                MessagePopupCAError(hresult);            else{                SetCtrlAttribute(panel, PANEL_LOADPROJECT, ATTR_DIMMED, 0);                SetCtrlAttribute(panel, PANEL_VIEWSOURCE,  ATTR_DIMMED, 0);                SetCtrlAttribute(panel, PANEL_RUNPROJECT,  ATTR_DIMMED, 0);                SetCtrlAttribute(panel, PANEL_CREATEEXE,   ATTR_DIMMED, 0);                SetCtrlAttribute(panel, PANEL_SHUTDOWNCVI, ATTR_DIMMED, 0);                SetCtrlAttribute(panel, PANEL_LOADFILE, ATTR_DIMMED, 0);             }                break;        }    return 0;}int CVICALLBACK LoadProject (int panel, int control, int event, void *callbackData,    int eventData1, int eventData2){    HRESULT hresult = 0;    int     retVal = 0;    char    pathName[MAX_PATHNAME_LEN];	       switch (event) {        case EVENT_COMMIT:                retVal = FileSelectPopup ("", "*.prj", "*.prj",                                      "Select Project", VAL_LOAD_BUTTON,                                      FALSE, FALSE, TRUE, FALSE, pathName);                if (retVal == VAL_EXISTING_FILE_SELECTED){                     SetWaitCursor(1);                     hresult = CVI_AppOpenProject (CVIObj, NULL, pathName, FALSE, &retVal);                     SetWaitCursor(0);                     if (retVal<0 || hresult<0)                         goto Error;                    }            break;        }    return 0;Error:GetError(hresult,retVal); 	return 0;}int CVICALLBACK ViewSource (int panel, int control, int event,    void *callbackData, int eventData1, int eventData2){    HRESULT hresult = 0;    int     retVal = 0,index,found,numFiles = 0;    char    *pathName = NULL,SelectedName[MAX_PATHNAME_LEN];      switch (event) {        case EVENT_COMMIT:            hresult = CVI_AppGetNumProjectFiles (CVIObj, NULL, &numFiles, &retVal);            if (retVal<0 || hresult<0)                goto Error;                                                            if (numFiles){                if (!(panel = LoadPanel (0, "sample9_1.uir", CHOOSEFILE)))                    goto Error;                for (index=0; index<numFiles; index++)                {                    hresult = CVI_AppGetFileNameByIndex (CVIObj,                         NULL, index, &pathName, &found, &retVal);                      if (retVal<0 || hresult<0)                        goto Error;                    if (!strstr(pathName, ".lib") && !strstr(pathName, ".obj"))                        InsertListItem(panel, CHOOSEFILE_LISTBOX, -1, pathName, pathName);                    if (pathName){                        CA_FreeMemory (pathName);                        pathName = NULL;                    }                    }                GetNumListItems (panel, CHOOSEFILE_LISTBOX, &numFiles);                if (numFiles<1)                 {                    MessagePopup ("sample9_1",                        "There are no editable files in the project.");                    break;                }                    InstallPopup (panel);                while (GetUserEvent (1, &panel, &control)!=1);                RemovePopup (0);                if (control!=CHOOSEFILE_CANCEL){                    GetCtrlVal(panel, CHOOSEFILE_LISTBOX, SelectedName);                    DiscardPanel(panel);                    hresult = CVI_AppGetAbsPathFromProject (                        CVIObj, NULL, SelectedName, &pathName, &retVal);                    if (retVal<0 || hresult<0)                        goto Error;                      SetWaitCursor(1);                    hresult = CVI_AppOpenWindow (CVIObj, NULL,                         pathName, &retVal);                    SetWaitCursor(0);                    if (pathName){                        CA_FreeMemory (pathName);                        pathName = NULL;                    }                     if (retVal<0 || hresult<0)                        goto Error;                   }                   else                     DiscardPanel(panel);            }            else                 MessagePopup ("sample9_1",                    "There are no editable files in the project.");            break;        }    return 0;Error:GetError(hresult,retVal);     return 0;}int CVICALLBACK RunProject (int panel, int control, int event, void *callbackData,    int eventData1, int eventData2){    HRESULT hresult = 0;    int     retVal = 0;		     switch (event) {        case EVENT_COMMIT:            SetWaitCursor(1);            hresult = CVI_AppRunProject (CVIObj, NULL, TRUE, &retVal);            SetWaitCursor(0);            if (retVal<0 || hresult<0)                goto Error;            break;        }Error:GetError(hresult,retVal);     return 0;}int CVICALLBACK CreateEXE (int panel, int control, int event,        void *callbackData, int eventData1, int eventData2){    HRESULT hresult = 0;    int     retVal = 0;    char    pathName[MAX_PATHNAME_LEN];     switch (event) {        case EVENT_COMMIT:            hresult = CVI_AppSetProjectTargetType (CVIObj, NULL, CVIConst_CVI_TARGET_TYPE_EXECUTABLE, &retVal);            if (retVal<0 || hresult<0)                goto Error;            retVal = FileSelectPopup ("", "*.exe", "*.exe", "Create Executable",                VAL_SAVE_BUTTON, FALSE, FALSE, TRUE, TRUE, pathName);            if (retVal == VAL_EXISTING_FILE_SELECTED ||                retVal == VAL_NEW_FILE_SELECTED)             {                hresult = CVI_AppSetProjectTargetPath (CVIObj, NULL, pathName, &retVal);                if (retVal<0 || hresult<0)                    goto Error;                SetWaitCursor(1);                hresult = CVI_AppCreateProjectTarget (CVIObj, NULL, &retVal);                SetWaitCursor(0);                if (retVal<0 || hresult<0)                    goto Error;            }            retVal = 0;            break;        }    return 0;    Error:GetError(hresult,retVal);     return 0;}int CVICALLBACK ShutdownCVI (int panel, int control, int event, void *callbackData,    int eventData1, int eventData2){    HRESULT hresult = 0;    long     retVal = 0;    switch (event) {        case EVENT_COMMIT:            hresult = CVI_AppExitCVI (CVIObj, NULL, TRUE, &retVal);            if ((hresult) || (retVal))                goto Error;            else{                   SetCtrlAttribute(panel, PANEL_LOADPROJECT, ATTR_DIMMED, 1);                SetCtrlAttribute(panel, PANEL_VIEWSOURCE,  ATTR_DIMMED, 1);                SetCtrlAttribute(panel, PANEL_RUNPROJECT,  ATTR_DIMMED, 1);                SetCtrlAttribute(panel, PANEL_CREATEEXE,   ATTR_DIMMED, 1);                SetCtrlAttribute(panel, PANEL_SHUTDOWNCVI, ATTR_DIMMED, 1);                SetCtrlAttribute(panel, PANEL_LOADFILE,    ATTR_DIMMED, 1);                 CA_DiscardObjHandle (CVIObj);                CVIObj = 0;            }                break;    }    return 0;Error:GetError(hresult,retVal);     return 0;}int CVICALLBACK Quit (int panel, int control, int event, void *callbackData,    int eventData1, int eventData2){	HRESULT hresult = 0;  	long     retVal = 0;       switch (event) {        case EVENT_COMMIT:   			 if (CVIObj)    			 {        		hresult = CVI_AppExitCVI (CVIObj, NULL, TRUE, &retVal);        		GetError(hresult,retVal);            		CA_DiscardObjHandle (CVIObj);        		CVIObj = 0;    		}             QuitUserInterface (0);            break;    }    return 0;}int CVICALLBACK LoadFile (int panel, int control, int event,		void *callbackData, int eventData1, int eventData2){	HRESULT hresult = 0;  	long     retVal = 0;  	char AddfileName[MAX_PATHNAME_LEN];	switch (event)	{		case EVENT_COMMIT:			retVal = FileSelectPopup ("", "*.*", "*.*", "添加文件",									  VAL_SELECT_BUTTON, 0, 0, 1, 0, AddfileName);			if(retVal==VAL_EXISTING_FILE_SELECTED)				hresult=CVI_AppAddFileToProject (CVIObj, NULL, AddfileName, &retVal);			if (retVal<0 || hresult<0)                goto Error;			break;	}	return 0;Error:GetError(hresult,retVal);     return 0;}static void MessagePopupCAError(int status){    char buffer[255];        CA_GetAutomationErrorString (status, buffer, 255);    MessagePopup("ActiveX Automation Error", buffer);}    static void MessagePopupCVIError(int status){    char buffer[255];        switch (status) {        case 0 : strcpy(buffer, "NO_ERROR" ); break;        default: strcpy(buffer, "CVI Error"); break;    }       MessagePopup("CVI Server Automation Error", buffer);}    static void GetError(int hresult,int retVal){    if (hresult<0)        MessagePopupCAError(hresult);    if (retVal<0)        MessagePopupCVIError(retVal);}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -