win API 에서 타임 인터럽트 걸려면 어떻게 해야하나요?
10초 만에 소스가 몇번 돌았는지 static 변수나 전역 변수로 체크 해보고 싶거든요.
간단한 예나 어떤 함수 써야 되는지 가르쳐 주세요.
부탁드립니다.
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/winui/windowsuserinterface/windowing/timers/timerreference/timerfunctions/settimer.asp
SetTimer로 n초에 한 번씩 메시지를 발생시키게 하는 것입니다.
_____________________________ 언제나 맑고픈 샘이가...http://purewell.biz
SetTimer 로 가능하지만 이것은 실시간 Timer 가 아닙니다.
이 타이머는 윈도 이벤트 루프상에서 작동하기 때문에 이벤트 상황에 영향을 받게 되지요. ( 예를 들어 창 위에서 마우스 이동을 빈번하게 발생시키는 등. )
멀티미디어 타이머로 timeSetEvent API 가 지원됩니다. 이 타이머는 타이머 자신의 스레드를 가지고 동작합니다. MSDN 참고하세요.
Orion Project : http://orionids.org
win API 에서 타임 인터럽트 걸려면 어떻게 해야하나요? 10초 만에 소스가 몇번 돌았는지 static 변수나 전역 변수로 체크 해보고 싶거든요. 간단한 예나 어떤 함수 써야 되는지 가르쳐 주세요. 부탁드립니다.
//////////////////////////////////////////////////////// HANDLE h_recv_thread; h_recv_thread= pthread_create(NULL,0,Msg,NULL,0,NULL); /////////////////////////////////////////////////////// void Msg() { int Tcount=0; while(count != 30) { Sleep(10000); sprintf(myMessage, "",robot1_dx,robot1_dy); MessageBox(NULL, myMessage ,"Message Box", MB_OK ); Tcount++; count=0; } }
이렇게 쓰레드를 생성할려고 했습니다. 그런데..
error C2664: 'CreateThread' : cannot convert parameter 3 from 'void (void)' to 'unsigned long (__stdcall *)(void *)'
예제보고 응용할려고 했는데 생각처럼 안 쉽네요.
무엇이 잘못 된건가요? ( 예제는 클래스 기반 이던데.... 제건 함수 기반이라 그게 문제인가요? 간단하게 예 좀 들어주세요 ㅜㅜ)
1%의 가능성이면 충분하다! 최선을 다하자!
CreateWaitableTimer, SetWaitableTimer, CancelWaitableTimer, WaitForMultipleObjects, WaitForSingleObject 이런 API 를 보시면 어느정도 답이 될지 모르겠네요
그리고, 쓰레드 만드는 logic 부분의 3번재 인자가 void(void) 가 들어가서 틀렸다는것 같군요.
void Msg(void* pArgument) { ... }
MSDN에서 _beginthread로 검색하여 보시면 쓸만한 예제가 나와있습니다.
-------------------------------- 그래날아보자꾸나
텍스트 포맷에 대한 자세한 정보
<code>
<blockcode>
<apache>
<applescript>
<autoconf>
<awk>
<bash>
<c>
<cpp>
<css>
<diff>
<drupal5>
<drupal6>
<gdb>
<html>
<html5>
<java>
<javascript>
<ldif>
<lua>
<make>
<mysql>
<perl>
<perl6>
<php>
<pgsql>
<proftpd>
<python>
<reg>
<spec>
<ruby>
<foo>
[foo]
http://msdn.microsoft.com/library/defaul
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/winui/windowsuserinterface/windowing/timers/timerreference/timerfunctions/settimer.asp
SetTimer로 n초에 한 번씩 메시지를 발생시키게 하는 것입니다.
_____________________________
언제나 맑고픈 샘이가...
http://purewell.biz
SetTimer 로 가능하지만 이것은 실시간 Timer 가 아닙니다.
SetTimer 로 가능하지만 이것은 실시간 Timer 가 아닙니다.
이 타이머는 윈도 이벤트 루프상에서 작동하기 때문에 이벤트
상황에 영향을 받게 되지요. ( 예를 들어 창 위에서 마우스 이동을
빈번하게 발생시키는 등. )
멀티미디어 타이머로 timeSetEvent API 가 지원됩니다.
이 타이머는 타이머 자신의 스레드를 가지고 동작합니다.
MSDN 참고하세요.
Orion Project : http://orionids.org
Re: win API 에서 타임 인터럽트 걸려면 어떻게 해야하나요?
10초만에 몇번 돌았는지 알아보는 경우는 굳이 타이머를 쓰기보다는,
10초를 재는 스레드를 생성하는 게 좋을 것 같습니다.
스레드에서 10초간 Sleep 한 뒤, 카운터를 확인하면 될 겁니다.
Orion Project : http://orionids.org
[code:1]////////////////////////////////
이렇게 쓰레드를 생성할려고 했습니다. 그런데..
이런에러가 뜨네요.
예제보고 응용할려고 했는데 생각처럼 안 쉽네요.
무엇이 잘못 된건가요?
( 예제는 클래스 기반 이던데.... 제건 함수 기반이라 그게 문제인가요? 간단하게 예 좀 들어주세요 ㅜㅜ)
부탁드립니다.
1%의 가능성이면 충분하다!
최선을 다하자!
CreateWaitableTimer, SetWaitableTimer, C
CreateWaitableTimer, SetWaitableTimer, CancelWaitableTimer, WaitForMultipleObjects, WaitForSingleObject 이런 API 를 보시면 어느정도 답이 될지 모르겠네요
그리고, 쓰레드 만드는 logic 부분의 3번재 인자가 void(void) 가 들어가서 틀렸다는것 같군요.
[code:1]void Msg(void* pArgument)
와 같이 함수를 만드시면 됩니다.
쓰레드 프로시저의 아규먼트로 void* 형이 쓰입니다.
MSDN에서 _beginthread로 검색하여 보시면
쓸만한 예제가 나와있습니다.
--------------------------------
그래날아보자꾸나
댓글 달기