|
임프랍니다.
원래 폼 위에 커서가 가만히 있는 경우 WM_NCHITTEST 메시지가 발생하지 않습니다. 이 메시지는 커서가
윈도우의 넌-클라이언트(non-client)영역에서 클릭하거나 움직일 경우에만 발생하지요.
그리고 VCL의 경우, Screen->Cursor를 새로 세팅했을 경우에도 발생합니다.
이것은 MDI든 아니든 동일합니다.
그래서, 저도 이상하다 싶어서 샘플 프로젝트를 만들어 테스트해봤습니다.
메시지를 트랩해서 보다가 이유는 알아냈습니다. 폼에 에디트나 메모 같은 캐럿이 껌뻑거리는 컨트롤이
있을 경우에만 그렇습니다. 그것도 완전히 커서가 껌뻑거리는 순간에 발생하더군요.
그래서, 폼 위에 버튼 등 다른 포커스를 가질 수 있는 컨트롤을 놓고, 그 버튼을 클릭해서 활성화시키면
캐럿이 껌뻑이지 않게 되고, 그후엔 메시지가 발생하지 않습니다.
원인을 짐작하기로는.. 에디트의 캐럿이 껌뻑거리는 순간 Screen->Cursor를 아주 잠깐이나마 변경하는 것
같습니다. 앞에서 말했다시피, VCL에서 내부적으로 커서를 다시 세팅하는 동안 WM_NCHITTEST 메시지를
보내게 됩니다.
그럼 이만...
hunters 님이 쓰신 글 :
: 안녕하세요. 오래간만에 질문을 올립니다.
: MDI 차일드 폼에 마우스를 위치해 놓은 상태에서
: 가만히 있는데도, WM_NCHITTEST 메세시가 계속 발생합니다.
:
: 이 메세지가 계속 발생하는 이유하고
: 발생하지 않게 하려면 어떻게 해야 하는 지 궁금합니다.
:
: 감사합니다.
:
|