.
처음에만 이상한 값이 나올것 같습니다. static으로 선언하지 않으면 쓰레기 값이 들어가 있어서 그렇겁니다. (전역 변수라 초기화 되어 있을것 같은데...)
case WM_CREATE: 아래부분에
memset(sTime, 0, sizeof(sTime)); 추가하면 잘 나올겁니다.
고작 블로킹 하나, 고작 25점 중에 1점, 고작 부활동 "만약 그 순간이 온다면 그때가 네가 배구에 빠지는 순간이야"
지역변수에요.. ㄷㄷ 저도 맨 처음엔 헷갈렸어요 ㅎㅎ
아.. 지역변수군요 후덜덜 전역변수인줄 알았네요 ㅎㅎ
WndProc 함수는 콜백 함수입니다. 다시 말해 시스템이 호출해 주는 함수에요. 지금 sTime 이 선언된 위치는 지역 변수의 위치입니다. 따라서 static을 붙여주지 않으면 함수가 종료됨과 동시에 변수에 저장된 값도 사라지게 됩니다.
WndProc 함수는 한 메세지마다 한 번씩 호출되요. WM_TIMER 라는 메세지가 있으면 WM_TIMER 부분만 실행한 후 종료되지요. 그리고 스택이 정리되기 때문에 sTime에 저장되어 있던 값은 사라져 버립니다.
그러니까 다음번에 WndProc 함수가 WM_PAINT 메세지를 처리하기 위해 호출될 때에는 sTime 변수에 무슨 값이 들어있는지 알 수가 없게 되고 이상한 값이 나오게 되죠.
아 해결됬습니다. hermes님 감사합니다. 대략 구성은 알고있었는데..ㅋㅋ
아직은 미흡한가보네요.이론따로 코딩따로 ...
감사합니다.
텍스트 포맷에 대한 자세한 정보
<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]
처음에만 이상한 값이 나올것
처음에만 이상한 값이 나올것 같습니다.
static으로 선언하지 않으면 쓰레기 값이 들어가 있어서 그렇겁니다.
(전역 변수라 초기화 되어 있을것 같은데...)
case WM_CREATE: 아래부분에
memset(sTime, 0, sizeof(sTime));
추가하면 잘 나올겁니다.
고작 블로킹 하나, 고작 25점 중에 1점, 고작 부활동
"만약 그 순간이 온다면 그때가 네가 배구에 빠지는 순간이야"
전역변수처럼 보이지만
지역변수에요.. ㄷㄷ 저도 맨 처음엔 헷갈렸어요 ㅎㅎ
아.. 지역변수군요 후덜덜 전역변수인줄 알았네요 ㅎㅎ
아.. 지역변수군요 후덜덜
전역변수인줄 알았네요 ㅎㅎ
고작 블로킹 하나, 고작 25점 중에 1점, 고작 부활동
"만약 그 순간이 온다면 그때가 네가 배구에 빠지는 순간이야"
WndProc은..
WndProc 함수는 콜백 함수입니다. 다시 말해 시스템이 호출해 주는 함수에요.
지금 sTime 이 선언된 위치는 지역 변수의 위치입니다. 따라서 static을 붙여주지 않으면
함수가 종료됨과 동시에 변수에 저장된 값도 사라지게 됩니다.
WndProc 함수는 한 메세지마다 한 번씩 호출되요. WM_TIMER 라는 메세지가 있으면
WM_TIMER 부분만 실행한 후 종료되지요. 그리고 스택이 정리되기 때문에 sTime에 저장되어 있던 값은 사라져 버립니다.
그러니까 다음번에 WndProc 함수가 WM_PAINT 메세지를 처리하기 위해 호출될 때에는 sTime 변수에 무슨 값이
들어있는지 알 수가 없게 되고 이상한 값이 나오게 되죠.
/hermes 아 감사요
아 해결됬습니다. hermes님 감사합니다. 대략 구성은 알고있었는데..ㅋㅋ
아직은 미흡한가보네요.이론따로 코딩따로 ...
감사합니다.
댓글 달기