본문 바로가기
프로그래밍학습/MFC

c2440: 'static_cast':'void(_thiscall CDlgtest::*)(WPARAM,LPARAM)'에서 LRESULT(_thiscall CWnd::*)변환할수 없습니다.

by 해리보쉬 2021. 4. 16.
728x90
반응형

c2440: 'static_cast':'void(_thiscall CDlgtest::*)(WPRAM,LPARAM)'에서 LRESULT(_thiscall CWnd::*)(WPRAM,LPARAM)'변환할수 없습니다.

이런 에러가 뜹니다.

흔한 경우는 아닌데 저 같은 경우는 2010..13 시절에 쓰여진 학습교재 코드를 빌딩하다 저런 메세지를 봤습니다.

ON_MESSAGE 함수는 아무런 문제가 없어보이는데 이런 문제가 생긴다면

아래와 같이 해보십시요

ON_MESSAGE(WM_MESSAGE, OnReceivemessage) 
이것을

ON_MESSAGE(WM_MESSAGE, (LRESULT(AFX_MSG_CALL CWnd::*)(WPARAM, LPARAM))OnReceivemessage) 
요런식으로 수정

원래 ON_MESSAGE의 정의.

728x90
#define ON_MESSAGE(message, memberFxn) \
	{ message, 0, 0, 0, AfxSig_lwl, \
		(AFX_PMSG)(AFX_PMSGW) \
		(static_cast< LRESULT (AFX_MSG_CALL CWnd::*)(WPARAM, LPARAM) > \
		(memberFxn)) },

크게 기대안하고 수정해봤는데 바로 빌드 되네요

사실 이렇게 바꿔서 돌아가는 이유를 아는게 제일 좋은데

뭐 에러가 한두개도 아니고 매번 수정하다보면 시간에 쫒기죠

일단 참조

728x90
반응형

댓글