CreateThread返回INVALID_HANDLE_VALUE
hThreadEvent=CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)ThreadProcEvent,&dwParam,0,&...
hThreadEvent=CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)ThreadProcEvent,&dwParam,0,&dwThreadID)
if(hThreadEvent==INVALID_HANDLE_VALUE);
{
DWORD dw = GetLastError();
CString str;
str.Format("%d",dw);
AfxMessageBox("事件线程创建失败!" + str);
//AfxMessageBox("事件线程创建失败!");
}
用GetLastError找错,却返回0,既然操作成功,问什么还返回无效句柄
运行后出现事件线程创建失败!0 展开
if(hThreadEvent==INVALID_HANDLE_VALUE);
{
DWORD dw = GetLastError();
CString str;
str.Format("%d",dw);
AfxMessageBox("事件线程创建失败!" + str);
//AfxMessageBox("事件线程创建失败!");
}
用GetLastError找错,却返回0,既然操作成功,问什么还返回无效句柄
运行后出现事件线程创建失败!0 展开
1个回答
展开全部
你的线程函数ThreadProcEvent写的有没有问题
线程函数原型 查看一下这个函数
DWORD WINAPI ThreadProcEvent(LPVOID lpParam);
线程函数原型 查看一下这个函数
DWORD WINAPI ThreadProcEvent(LPVOID lpParam);
追问
我是菜鸟,能不能帮我看看线程函数啊,你给我个邮箱,我把线程函数给你发过去
追答
414477168@qq.com
我看了一下 上面这段代码 if后面多了一个分号
if(hThreadEvent==INVALID_HANDLE_VALUE);
{}
ThreadProcEvent这个函数中 的参数你应该传入了 主线程的句柄&dwParam
应该在线程函数PostMessageA中利用到 但是你没有使用 所以会报错
例
HWND *hWnd=(HWND*)pParam;
::PostMessageA(*hWnd,WM_MYMSG,0,(LPARAM)EV_RXCHAR);
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |