关于串口的问题~~傻了....
原来用VC6.0写的串口程序运行正常 ,后来该用VS.net环境下运行,在编译的时候出现了下面这个错误,不知道为什么~~求救~~~
error C2440: “static_cast” : 无法从“void (__thiscall CResultListDlg::* )(WPARAM,LPARAM)”转换为“LRESULT (__thiscall CWnd::* )(WPARAM,LPARAM)” 在匹配目标类型的范围内没有具有该名称的函数
具体代码如下:
//自定义消息
const CM_RECEIVE = WM_USER+100;
//添加消息映射宏
ON_MESSAGE(CM_RECEIVE,OnRecieveData)
//线程函数
DWORD ThreadFunction(LPVOID pParam)
{
DWORD dwEvtMask=0,
dwResult=0;
// SetCommMask(hCom,EV_RXCHAR|EV_TXEMPTY); //有哪些串口事件需要监视
tOverLaped.hEvent = CreateEvent(NULL,TRUE,FALSE,NULL);
while (IsFun)
{
WaitCommEvent(((CChuankouDlg*)AfxGetMainWnd())->hCom,&dwEvtMask,&tOverLaped);
dwResult = WaitForSingleObject(tOverLaped.hEvent,1000);
switch(dwResult)
{
case WAIT_OBJECT_0:
switch(dwEvtMask)
{
case EV_RXCHAR:
{
if(IsStop)
{
IsStop = FALSE;
//发送消息,由消息函数接收数据
::PostMessage(AfxGetMainWnd()->m_hWnd, CM_RECEIVE,0,(LPARAM)EV_RXCHAR);
}
break;
}
}
break;
}
}
return 0;
}
//自定义的消息处理函数,用于接收数据
void CChuankouDlg::OnRecieveData(WPARAM wParam,LPARAM lParam)
{
DWORD res,factbyte;
memset(DataBuffer,0,1024);
COMSTAT rst; //str返回串口状态信息
ClearCommError(hCom,&res,&rst);
rOverLaped.hEvent = CreateEvent(NULL,TRUE,FALSE,NULL);
//读取数据到缓冲区中
if (ReadFile(hCom,DataBuffer,rst.cbInQue,&factbyte,&rOverLaped))
{
DataBuffer[rst.cbInQue] = 0;
IsStop = FALSE;
}
else
{
res = WaitForSingleObject(rOverLaped.hEvent,5000);
}
IsStop = FALSE;
}
错误:error C2440: “static_cast” : 无法从“void (__thiscall CResultListDlg::* )(WPARAM,LPARAM)”转换为“LRESULT (__thiscall CWnd::* )(WPARAM,LPARAM)” 在匹配目标类型的范围内没有具有该名称的函数