📄 cvidemo.c
字号:
if (hresult<0)
MessagePopupCAError(hresult);
if (retVal<0)
MessagePopupCVIError(retVal);
return 0;
}
//----------------------------------------------------------------------------
// RunProject
//----------------------------------------------------------------------------
int CVICALLBACK RunProject (int panel, int control, int event, void *callbackData,
int eventData1, int eventData2)
{
HRESULT hresult = S_OK;
int retVal = 0;
switch (event) {
case EVENT_COMMIT:
// Run Project
SetWaitCursor(1);
hresult = CVI_AppRunProject (cviAutoObj, NULL, TRUE, &retVal);
SetWaitCursor(0);
if (retVal<0 || hresult<0)
goto Error;
break;
}
Error:
if (hresult<0)
MessagePopupCAError(hresult);
if (retVal<0)
MessagePopupCVIError(retVal);
return 0;
}
//----------------------------------------------------------------------------
// CreateEXE
//----------------------------------------------------------------------------
int CVICALLBACK CreateEXE (int panel, int control, int event,
void *callbackData, int eventData1, int eventData2)
{
HRESULT hresult = S_OK;
int retVal = 0;
char pathName[MAX_PATHNAME_LEN];
switch (event) {
case EVENT_COMMIT:
// Create Standalone EXE
hresult = CVI_AppSetProjectTargetType (cviAutoObj, 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 (cviAutoObj, NULL, pathName, &retVal);
if (retVal<0 || hresult<0)
goto Error;
SetWaitCursor(1);
hresult = CVI_AppCreateProjectTarget (cviAutoObj, NULL, &retVal);
SetWaitCursor(0);
if (retVal<0 || hresult<0)
goto Error;
}
retVal = 0;
break;
}
return 0;
Error:
if (hresult<0)
MessagePopupCAError(hresult);
if (retVal<0)
MessagePopupCVIError(retVal);
return 0;
}
//----------------------------------------------------------------------------
// ShutdownCVI
//----------------------------------------------------------------------------
int CVICALLBACK ShutdownCVI (int panel, int control, int event, void *callbackData,
int eventData1, int eventData2)
{
HRESULT hresult = S_OK;
long retVal = 0;
ERRORINFO errorInfo;
switch (event) {
case EVENT_COMMIT:
// Shutdown CVI Application
hresult = CVI_AppExitCVI (cviAutoObj, &errorInfo, 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);
CA_DiscardObjHandle (cviAutoObj);
cviAutoObj = 0;
}
break;
}
return 0;
Error:
if (hresult<0)
MessagePopupCAError(hresult);
if (retVal<0)
MessagePopupCVIError(retVal);
return 0;
}
//----------------------------------------------------------------------------
// Quit
//----------------------------------------------------------------------------
int CVICALLBACK Quit (int panel, int control, int event, void *callbackData,
int eventData1, int eventData2)
{
switch (event) {
case EVENT_COMMIT:
QuitUserInterface (0);
break;
}
return 0;
}
//----------------------------------------------------------------------------
// StatusTimer - Timer to poll the CVI IDE for its status
//----------------------------------------------------------------------------
int CVICALLBACK StatusTimer (int panel, int control, int event, void *callbackData,
int eventData1, int eventData2)
{
HRESULT hresult = S_OK;
int retVal = 0;
int compiled, intCompiled, waiting;
enum CVIEnum_CVIExecutionState runState, intRunState;
switch (event) {
case EVENT_TIMER_TICK:
if (cviAutoObj)
{
hresult = CVI_AppGetCVIState (cviAutoObj, NULL, &compiled,
&runState, &intCompiled, &intRunState, &waiting, &retVal);
if ((hresult) || (retVal))
{
cviAutoObj = 0;
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);
goto Error;
}
}
else
{
compiled = FALSE;
runState = 0;
waiting = FALSE;
}
SetCtrlVal (panel, PANEL_COMPILED, compiled);
SetCtrlVal (panel, PANEL_RUNSTATE, runState);
SetCtrlVal (panel, PANEL_WAITING, waiting);
break;
}
return 0;
Error:
if (hresult<0)
MessagePopupCAError(hresult);
if (retVal<0)
MessagePopupCVIError(retVal);
return 0;
}
//----------------------------------------------------------------------------
// MessagePopupCAError
//----------------------------------------------------------------------------
static void MessagePopupCAError(int status)
{
char buffer[255];
CA_GetAutomationErrorString (status, buffer, 255);
MessagePopup("ActiveX Automation Error", buffer);
}
//----------------------------------------------------------------------------
// MessagePopupCVIError
//----------------------------------------------------------------------------
static void MessagePopupCVIError(int status)
{
char buffer[255];
switch (status) {
case 0 : strcpy(buffer, "NO_ERROR" ); break;
case -2147221503 : strcpy(buffer, "INVALID_PATHNAME" ); break;
case -2147221502 : strcpy(buffer, "PATHNAME_NOT_ABSOLUTE" ); break;
case -2147221501 : strcpy(buffer, "PATHNAME_IS_RELATIVE" ); break;
case -2147221500 : strcpy(buffer, "FILE_NOT_IN_PROJECT" ); break;
case -2147221499 : strcpy(buffer, "FILE_DOES_NOT_EXIST" ); break;
case -2147221498 : strcpy(buffer, "FILE_NOT_LOADED" ); break;
case -2147221497 : strcpy(buffer, "PROGRAM_RUNNING" ); break;
case -2147221496 : strcpy(buffer, "PROGRAM_SUSPENDED" ); break;
case -2147221495 : strcpy(buffer, "NO_PROGRAM_RUNNING" ); break;
case -2147221494 : strcpy(buffer, "NO_PROGRAM_SUSPENDED" ); break;
case -2147221493 : strcpy(buffer, "NO_RUNNING_OR_SUSPENDED" ); break;
case -2147221492 : strcpy(buffer, "FILE_NOT_EXCLUDABLE" ); break;
case -2147221491 : strcpy(buffer, "NOT_A_LOADED_INSTRUMENT" ); break;
case -2147221490 : strcpy(buffer, "NOT_A_C_FILE" ); break;
case -2147221489 : strcpy(buffer, "NOT_A_SRC_OR_TEXT_FILE" ); break;
case -2147221488 : strcpy(buffer, "CANNOT_CLOSE_WINDOW" ); break;
case -2147221487 : strcpy(buffer, "LINE_TOO_LONG" ); break;
case -2147221486 : strcpy(buffer, "OUT_OF_MEMORY" ); break;
case -2147221485 : strcpy(buffer, "WAITING_FOR_RESPONSE" ); break;
case -2147221484 : strcpy(buffer, "NOT_AN_FP_FILE" ); break;
case -2147221483 : strcpy(buffer, "FUNCTION_NOT_IN_FILE" ); break;
case -2147221482 : strcpy(buffer, "INVALID_FP_PARAM_INDEX" ); break;
case -2147221481 : strcpy(buffer, "ERROR_READING_FP_FILE" ); break;
case -2147221480 : strcpy(buffer, "ERROR_REPORTED_TO_USER" ); break;
case -2147221479 : strcpy(buffer, "INVALID_PROJ_FILE_INDEX" ); break;
case -2147221478 : strcpy(buffer, "PROJECT_IS_UNTITLED" ); break;
case -2147221477 : strcpy(buffer, "NOT_A_PROJECT_FILE" ); break;
case -2147221476 : strcpy(buffer, "KEYSTROKE_OVERFLOW" ); break;
case -2147221475 : strcpy(buffer, "INVALID_KS_INTERVAL" ); break;
case -2147221474 : strcpy(buffer, "DEBUGGING_EXTERNAL" ); break;
case -2147221473 : strcpy(buffer, "IS_A_PROJECT_FILE" ); break;
case -2147221472 : strcpy(buffer, "FILE_NOT_PRINTABLE" ); break;
case -2147221471 : strcpy(buffer, "INVALID_TARGET_TYPE" ); break;
case -2147221470 : strcpy(buffer, "INVALID_FP_FUNC_INDEX" ); break;
case -2147221469 : strcpy(buffer, "NOT_DLL_PROJECT" ); break;
case -2147221468 : strcpy(buffer, "MULTI_DIM_ARRAY" ); break;
case -2147221467 : strcpy(buffer, "INVALID_SAFEARRAY" ); break;
case -2147221466 : strcpy(buffer, "INVALID_NULL_PARAM" ); break;
default : strcpy(buffer, "Unknown Error" ); break;
}
MessagePopup("CVI Server Automation Error", buffer);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -