一个基于对话框的MFC程序,已经在对话框类里声明了
DWORD WINAPI ThreadProcEvent(LPVOID pParam);
在cpp里的创建语句如下:
[code]
hThreadEvent = CreateThread(NULL,
0,
(LPTHREAD_START_ROUTINE)ThreadProcEvent,
&dwParam,
0,
&dwThreadID);
[/code]结果报错:error C2440: 'type cast' : cannot convert from '' to 'unsigned long (__stdcall *)(void *)'
已经包含了process.h。
DWORD WINAPI ThreadProcEvent(LPVOID pParam);
在cpp里的创建语句如下:
[code]
hThreadEvent = CreateThread(NULL,
0,
(LPTHREAD_START_ROUTINE)ThreadProcEvent,
&dwParam,
0,
&dwThreadID);
[/code]结果报错:error C2440: 'type cast' : cannot convert from '' to 'unsigned long (__stdcall *)(void *)'
已经包含了process.h。
这样呢
DWORD CCommApiDlg::ThreadProcEvent(LPVOID pParam)
{
DWORD dwEvtMask,dwRes;
Eol.hEvent = CreateEvent(NULL,TRUE,FALSE,NULL);
while(fEventRun)
{
WaitCommEvent(hCom,&dwEvtMask,&Eol);
dwRes = WaitForSingleObject(Eol.hEvent,100);
switch(dwRes)
{
case WAIT_OBJECT_0:
switch(dwEvtMask)
{
case EV_RXCHAR:
if(!fStopMsg)
{
fStopMsg = true;
::PostMessage(hWnd, WM_MYMSG, 0, (LPARAM)EV_RXCHAR);
}
break;
case EV_TXEMPTY:
AfxMessageBox("发送缓冲区为空");
break;
}
break;
}
}
return true;
}
[/code]
DWORD CCommApiDlg::ThreadProcEvent(LPVOID pParam)
{
DWORD dwEvtMask,dwRes;
Eol.hEvent = CreateEvent(NULL,TRUE,FALSE,NULL);
while(fEventRun)
{
WaitCommEvent(hCom,&dwEvtMask,&Eol);
dwRes = WaitForSingleObject(Eol.hEvent,100);
switch(dwRes)
{
case WAIT_OBJECT_0:
switch(dwEvtMask)
{
case EV_RXCHAR:
if(!fStopMsg)
{
fStopMsg = true;
::PostMessage(hWnd, WM_MYMSG, 0, (LPARAM)EV_RXCHAR);
}
break;
case EV_TXEMPTY:
AfxMessageBox("发送缓冲区为空");
break;
}
break;
}
}
return true;
}
[/code]
DWORD WINAPI ThreadProcEvent(LPVOID pParam);
=============================
线程函数只能是全局的或是静态成员函数,另外返回值确实是UINT
{
DWORD dwEvtMask,dwRes;
Eol.hEvent = CreateEvent(NULL,TRUE,FALSE,NULL);
while(fEventRun)
{
WaitCommEvent(hCom,&dwEvtMask,&Eol);
dwRes = WaitForSingleObject(Eol.hEvent,100);
switch(dwRes)
{
case WAIT_OBJECT_0:
switch(dwEvtMask)
{
case EV_RXCHAR:
if(!fStopMsg)
{
fStopMsg = true;
::PostMessage(hWnd, WM_MYMSG, 0, (LPARAM)EV_RXCHAR);
}
break;
case EV_TXEMPTY:
AfxMessageBox("发送缓冲区为空");
break;
}
break;
}
}
return true;
}
感谢哦~~