📄 sample9_1.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 + -