FLTK 기반 GUI 응용 프로그램 인 RAM Machine을 작성하고 있습니다.
각 실행 된 주문 후 1 초 동안 잠자기 상태로 유지하고, 동시에 이벤트 처리 등을 차단하지 않도록 화면을 최신 상태로 유지하고 액세스 할 수 있도록하고 싶습니다. 문제는 내가 사용하는 모든 기능이 임의의 시간 동안 잠을 잔다는 것입니다.
예를 들면 :
void FlowControl::_runProgram (void) {
//Inside a loop:
_step(); //execute next order
clock_t start = timer.start(); //initialize clock
do{
//wait max. 1-passed_time() [seconds] until 'something happens'
Fl::wait(1-timer.passed_time());
}while ( timer.passed_time() < 1 ); // check if 1 second has passed
//...
}
결과 : GUI가 차단되지 않고 모든 것이 작동하지만 다음 단계를 위해 정확히 1 초가 아니라 0 초에서 6 초 (!!) 초까지 기다려야합니다.
내가 이미 시도한 것 : Fl :: wait () / Fl :: check () / Fl :: ready () + Sleep () / SetTimer () / clock_t / time_t 멀티 스레딩 유무에 관계없이.
이 문제를 어떻게 해결합니까?
FLTK 문서 : http://www.fltk.org/doc-1.3/index.html
제가 생각할 수있는 가장 쉬운 방법은 사용 Fl::add_timeout()
과 Fl::repeat_timeout()
기능입니다. 이 작은 데모에서 Greg Ercolano가 수행하는 방법의 예를 확인하십시오. http://seriss.com/people/erco/fltk/#AnimateDrawing
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다