error C2440: ‘static_cast’ : cannot convert from ‘~’ to ‘~’

error C2440: ‘static_cast’ : cannot convert from ‘void (__thiscall CWMCALOADERDlg::* )(WPARAM,LPARAM)’ to ‘LRESULT (__thiscall CWnd::* )(WPARAM,LPARAM)’

MSDN은 안보이는데… 관련 에러에 대한 다른 포스팅들

http://blog.stevienova.com/2007/02/28/error-c2440-static_cast-cannot-convert-from-uint-__thiscall-cstaticlink-cpoint-to-lresult-__thiscall-cwnd-cpoint/

 

가장 도움이 된 곳 http://devday.tistory.com/entry/error-C2440-staticcast-cannot-convert-from-void-thiscall-XXX-WPARAMLPARAM-to-LRESULT-thiscall-CWnd-WPARAMLPARAM

 

BEGIN_MESSAGE_MAP(CWMCALOADERDlg, CDialog)
	//{{AFX_MSG_MAP(CWMCALOADERDlg)
	ON_WM_PAINT()
	ON_WM_QUERYDRAGICON()
	ON_BN_CLICKED(IDC_CONNECT, OnConnect)
	ON_BN_CLICKED(IDC_DISCONNECT, OnDisconnect)
	ON_BN_CLICKED(IDC_BALANCE, OnBalance)
	ON_BN_CLICKED(IDC_BUTTON_CURRENT, OnButtonCurrent)
	ON_BN_CLICKED(IDC_BUTTON_CLEAR, OnButtonClear)
	ON_BN_CLICKED(IDC_ORDER, OnButtonOrder)
	//}}AFX_MSG_MAP

	ON_MESSAGE(CA_WMCAEVENT, OnWmcaEvent)//****//에러가 발생한 위치
END_MESSAGE_MAP()
//////////////////////////////////

//void이던 리턴값을 LRESULT로 바꿔주고...
LRESULT CWMCALOADERDlg::OnWmcaEvent(WPARAM dwMessageType, LPARAM lParam)
{
	switch(dwMessageType) {
	case CA_CONNECTED:			//로그인 성공
		OnWmConnected( (LOGINBLOCK*)lParam );
		break;
	case CA_DISCONNECTED:		//접속 끊김
		OnWmDisconnected();
		break;
	case CA_SOCKETERROR:		//통신 오류 발생
		OnWmSocketerror( (int)lParam );
		break;
	case CA_RECEIVEDATA:		//서비스 응답 수신(TR)
		OnWmReceivedata( (OUTDATABLOCK*)lParam );
		break;
	case CA_RECEIVESISE:		//실시간 데이터 수신(BC)
		OnWmReceivesise( (OUTDATABLOCK*)lParam );
		break;
	case CA_RECEIVEMESSAGE:		//상태 메시지 수신 (입력값이 잘못되었을 경우 문자열형태로 설명이 수신됨)
		OnWmReceivemessage( (OUTDATABLOCK*)lParam );
		break;
	case CA_RECEIVECOMPLETE:	//서비스 처리 완료
		OnWmReceivecomplete( (OUTDATABLOCK*)lParam );
		break;
	case CA_RECEIVEERROR:		//서비스 처리중 오류 발생 (입력값 오류등)
		OnWmReceiveerror( (OUTDATABLOCK*)lParam );
		break;
	default:
		break;
	}
	return 0;//리턴값을 넣어주니까 통과..
}

 

비슷한 오류가 많은 것 같은데…

처리방법은 이런식으로 응용하면 될 듯 하다.

이번 경우에는 에러메세지가 void랑 LRESULT랑 처리를 못 하겠다는 뭐 그런거니까…

void를 LRESULT형태로 바꿔준것..

Leave a Reply

Your email address will not be published. Required fields are marked *

 characters available