마이크로소프트웨어 8월호 원고 이상한 부분들~

2006-08-04 신영진

오늘에서야 8월호를 보게 되었습니다. 흐흐~
살펴보니 역시나 오해할 만한 부분과 잘못된 부분이 많이 보이네요~

SendMessage의 동작 원리

SendMessag를 호출한 쪽의 스레드도 오류를 일으킨다.

호출한 쪽의 스레드가 오류를 일으킨다기 보다는 같이 블록되어서 데드락 상황이 발생된다는 의미입니다.

메시지 처리 순서

PostMessage로 전달된 메시지, PostMessage로 전달된 메시지

위의 부분은 불필요하게 반복된 부분입니다. 하나가 되어야 겠네요. "PostMessage로 전달된 메시지"

위의 메시지 우선순위 판정에 의해 WM_CHAR가 후에 처리된다.

WM_CHAR가 WM_KEYUP보다 먼저 처리되죠. 부연 설명 하자면 WM_KEYDOWN, WM_KEYUP, WM_CHAR로 발생하지만 처리는 WM_KEYDOWN, WM_CHAR, WM_KEYUP의 순서로 이루어 집니다.

무한 대기에 빠지지 않는 법

BOOL?IsHungAppWindow(HWND?hWnd);

이번달 소스 부분에 이상하게 ?가 많이 추가되어 있던데 아마도 인쇄나 편집상의 오류로 보입니다. ?는 공백입니다.

물론 SendMessage의 메시지 루프에서 무한 대기에 빠지는 경우에는 해결책이 없다.

해결책이 없는 것은 아니죠. 바로 다음에 나오는 함수들을 사용하면 해결할 수 있습니다. IsHungAppWindow만으론 그 상황을 해결하기 어렵다는 의미입니다.