[MFC] OnTimer 컴파일러 에러

error C2440: 'static_cast' : 'void (__cdecl 헤더클래스명::* )(UINT)' 에서 'void (__cdecl CWnd::* )(UINT_PTR)'로 변환할 수 없습니다.

이 에러의 원인은 64bit의 os에서 컴파일하면 UINT_PTR이 unsigned __int64로 되어버려 함수의 매개변수인 UINT와 형이 달라지기 때문에 발생한다.
원인이 단순한 만큼 해결방법 또한 단순한데 헤더파일에 선언된 afx_msg void OnTimer(UINT nIdEvent); 에서 매개변수를 UINT_PTR로 바꾸면 해결된다.

댓글