2015. 1. 28. 10:15
VC 6.0에서 VS 2010으로 변환했을 때 다음과 같은 에러가 발생했다
error C2440: 'static_cast' :
'UINT (__thiscall CSkinDlg::* )(CPoint)'에서
'LRESULT (__thiscall CWnd::* )(CPoint)'(으)로 변환할 수 없습니다.
그래서 에러난 곳을 확인해보니...
메시지 맵에서 ON_WM_NCHITTEST()에서 에러가 났다..
정의를 찾아가 보니...
#define ON_WM_NCHITTEST() \
{ WM_NCHITTEST, 0, 0, 0, AfxSig_l_p, \
(AFX_PMSG)(AFX_PMSGW) \
(static_cast< LRESULT (AFX_MSG_CALL CWnd::*)(CPoint) > (&ThisClass :: OnNcHitTest)) },
다음과 같은 코드라 수정이 불가능했다..
그런데...
저 메시지 맵과 연관된 함수 OnNcHitTest()의 선언을 찾아가니...
afx_msg UINT OnNcHitTest(CPoint point);
위와 같이 되어 있고 UINT가 LRESULT로 바꿀 수 없다는 에러 메시지가 나서
리턴형 UINT를 LRESULT로 바꾸니 에러가 해결 되었다 ^^
afx_msg LRESULT OnNcHitTest(CPoint point);