error C2440: 'static_cast' : 'UINT (__thiscall 클래스명::* )(CPoint)'에서 'LRESULT (__thiscall CWnd::* )(CPoint)'(으)로 변환할 수 없습니다.
기본 형식에서 파생 형식으로 캐스팅하려면 dynamic_cast 또는 static_cast가 필요합니다.
VS6에서 작업한 MFC 코드를 Visual Studio2008로 변환하여 작업하려고 보면 위와 같은 에러를 토해냅니다.
Visual Studio 2003 이후로 NCHITTEST 선언이 변경되어 발생한 문제입니다.
더이상 VS6에서 작업할 일 없다 싶으신 분들은 Header의 선언부분인
afx_msg UINT OnNcHitTest(CPoint point);
를
afx_msg LRESULT OnNcHitTest(CPoint point);
로 변경해주시고, 마찬가지로 cpp 본문 또한 리턴 타입을
UINT 클래스명::OnNcHitTest(CPoint point) {
에서
LRESULT 클래스명::OnNcHitTest(CPoint point) {
로 변경해주시면 됩니다.
VS6와 Visual Studio 2008 양쪽의 호환성을 원하시는 분들은 전처리기를 사용하여 Header는
#if _MSC_VER > 1400
afx_msg LRESULT OnNCHitTest(CPoint point);
#else
afx_msg UINT OnNCHitTest(CPoint point);
#endif
로 변경하고 cpp는
#if _MSC_VER > 1400
LRESULT 클래스명::OnNcHitTest(CPoint point) {
#else
UINT 클래스명::OnNcHitTest(CPoint point) {
#endif
으로 변경해주시면 VS6, Visual Studio 2008 어디서든 에러 없이 사용하실 수 있습니다.