LabWindows/CVI 에서 가변 인자를 사용한 출력 예제
LabWindows/CVI 에서 로그 윈도우에 출력하기 위해 가변 인자를 사용하여 서식화된 문자열을 입력할 수 있습니다. 이를 통해 아래와 같이 Tree 윈도우에 출력이 가능합니다.


void LogExample(char* szFormat, ...)
{
static unsigned int nIndex = 1;
char szTemp[100] = "";
sprintf(szTemp,"%d",nIndex++);
int index = InsertListItem(tab_MAIN_WDM,TAB_WDMLOG_LOG,-1,szTemp,0);
// Get Current Clock
char szCurrentTime[100] = "";
time_t t = time(NULL);
struct tm now = *localtime(&t);
sprintf(szCurrentTime,"%04d-%02d-%02d %02d:%02d:%02d",now.tm_year+1900, now.tm_mon+1, now.tm_mday,now.tm_hour,now.tm_min,now.tm_sec);
// Insert Tree Cell '1'
SetTreeCellAttribute(tab_MAIN_WDM, TAB_WDMLOG_LOG, index, 1, ATTR_LABEL_TEXT, szCurrentTime);
// Print-out data
char szBuf[1024] = {0, };
va_list lpStart;
va_start(lpStart, szFormat);
vsprintf(szBuf, szFormat, lpStart);
// Insert Tree Cell '2'
SetTreeCellAttribute(tab_MAIN_WDM, TAB_WDMLOG_LOG, index, 2, ATTR_LABEL_TEXT, szBuf);
va_end(lpStart);
////////////////////////////////////////////////////////////////////////////////////////////
// DB QUERY (WDMALMLOG) WDM ALM 로그
{
//if ( (nIndex % 10) == 0 )
{
char szSQLQuery[8192] = "";
sprintf(szSQLQuery,"INSERT INTO WDMALMLOG VALUES('%s','%s','%s')",szTemp,szCurrentTime,szBuf);
acsExeSQL_UTF8(szSQLQuery);
}
}
////////////////////////////////////////////////////////////////////////////////////////////
// Auto Scroll
MakeTreeItemVisible(tab_MAIN_WDM, TAB_WDMLOG_LOG, index);
if (index > 0 )
{
// FONT COLOR (CHAR)
SetTreeItemAttribute(tab_MAIN_WDM, TAB_WDMLOG_LOG, index, ATTR_LABEL_COLOR, VAL_BLACK);
///////////////////////////////////////////////////////////////////////////////////////
// 1000 개 까지만 보관한다.
if ( index > 1000 )
DeleteListItem (tab_MAIN_WDM,TAB_WDMLOG_LOG,0,1);
///////////////////////////////////////////////////////////////////////////////////////
}
}