LabWindows/CVI 에서 일정 시간 이후 자동으로 종료되는(Autoclose) 팝업 윈도우 코드 (쓰레드에서 사용가능하다)
/**
@brief Display panel with wait for 'nWaitTimeMS' (Millisecond unit)
@brief 쓰레드에서 사용가능하다.
@param
nWaitTimeMS : 대기 시간
szMessage : 출력 메세지
*/
int ShowPleaseWaitPanel(unsigned int nWaitTimeMS, char * szMessage)
{
// Modaless
DisplayPanel(panelHandle_WAIT);
unsigned int dwStartTick = GetTickCount();
for(;;)
{
static int nState = 1;
if ( abs(GetTickCount() - dwStartTick) > nWaitTimeMS)
{
// 메시지 에디트 박스를 초기화 하여,차후에 사용할때 이전 문자가 남아있지 않도록 한다.
SetCtrlVal(panelHandle_WAIT,PANEL_WAIT_MSG,"");
// 남은 시간 초, 에디트 박스를 초기화하여, 차후에 사용할때 이전 문자가 남아있지 않도록 한다.
SetCtrlVal(panelHandle_WAIT,PANEL_WAIT_LEFT_TIME_SEC,"");
ProcessDrawEvents();
ProcessSystemEvents();
break;
}
if ( szMessage != NULL)
SetCtrlVal(panelHandle_WAIT,PANEL_WAIT_MSG,szMessage);
{
char szTimeLeft[1024] = "";
int nLeftSec = (nWaitTimeMS - (abs(GetTickCount() - dwStartTick)));
// 타이밍에 따라 남은 시간 계산시 음수가 되면 0으로 강제 설정한다.
if (nLeftSec <= 0 )
nLeftSec = 0;
sprintf(szTimeLeft,"Estimated %04d msec(s)",nLeftSec);
SetCtrlVal(panelHandle_WAIT,PANEL_WAIT_LEFT_TIME_SEC,szTimeLeft);
}
ProcessDrawEvents();
ProcessSystemEvents();
nState = nState ? 0 : 1;
}
// Modaless
HidePanel(panelHandle_WAIT);
return 0;
}
Post Views: 4