메세지를 보내는 컨트롤의 ID를 얻는 msg WM_CTLCOLORSTATIC가 수신되면 대화 상자 프로 시저에 포함하려고합니다. 내가 WM_CTLCOLORSTATIC의 lParam에 그것이 정확하지 않을 수 있습니다 값 65535을 반환 캐스트 입력 할 때WM_CTLCOLORSTATIC lParam, C++ WINAPI
case WM_CTLCOLORSTATIC:
UINT ID = GetWindowLong((HWND)lParam, GWL_ID);
문제는 ...이다; 최대 UINT ID 65535의 리소스 항목조차 없습니다.
왜 이런 일이 발생했는지 알 수 있습니까?
당신은 창 핸들 (lParam에가) 65535 건가요? 아니면'GetWindowLong'의 결과가 65535입니까? 귀하의 질문을 명확히하십시오. – arx
'GetWindowLong'은 x64 플랫폼을 지원하지 않기 때문에 더 이상 사용되지 않습니다. 올바른 함수는 ['GetWindowLongPtr']입니다 (http://msdn.microsoft.com/en-us/library/windows/desktop/ms633585 (v = vs .85) .aspx) – Mgetz
CTLCOLORSTATIC의 매개 변수 "lParam"과 GWL_ 메시지 "GWL_ID"를 사용하여 GetWindowLong을 호출했습니다. 그래서 GetWindowLong CTLCOLORSTATIC 메시지를 보내는 컨트롤의 UINT ID를 반환해야합니다. 그러나 그렇지 않습니다. 65535를 반환합니다. –