首页
社区
课程
招聘
[求助]CreateThread函数(在线等)
发表于: 2006-12-9 15:59 7509

[求助]CreateThread函数(在线等)

2006-12-9 15:59
7509
我在vc里用这个函数建立一个线程代码如下:
#include<windows.h>
#include<iostream.h>
DWORD WINAPI ThreadFunc()
{
        MessageBox(NULL,"this is a test","Test",MB_OK);
        return 0;
}
int main()
{
  HANDLE hThread=NULL;
  DWORD ThreadNum=0;
  hThread=CreateThread(NULL,NULL,ThreadFunc,0,NULL,&ThreadNum);
  return 0;
}
编译器总说我的第三个参数不对,'CreateThread' : cannot convert parameter 3 from 'unsigned long (void)' to 'unsigned long (__stdcall *)(void *)'None of the functions with this name in scope match the target type
我看书上也是这样调用的呀,迷茫??是那里错了呢?

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (7)
雪    币: 398
活跃值: (343)
能力值: (RANK:650 )
在线值:
发帖
回帖
粉丝
2
这类问题在csdn 几秒种就会有人解答回复
hThread=CreateThread(NULL,NULL,(LPTHREAD_START_ROUTINE)ThreadFunc,0,NULL,&ThreadNum);
2006-12-9 16:10
0
雪    币: 398
活跃值: (343)
能力值: (RANK:650 )
在线值:
发帖
回帖
粉丝
3
#include<windows.h>
#include<iostream.h>
DWORD WINAPI ThreadFunc(LPVOID param) //线程有个参数的,要加上
{
  MessageBox(NULL,"this is a test","Test",MB_OK);
  return 0;
}
int main()
{
  HANDLE hThread=NULL;
  DWORD ThreadNum=0;
  hThread=CreateThread(NULL,NULL,(LPTHREAD_START_ROUTINE)ThreadFunc,0,NULL,&ThreadNum);  //ThreadFunc前加个强行转换不会错
  WaitForSingleObject(hThread, INFINITE); //这句不加上有可能线程还没起来就结束了
  return 0;
}
2006-12-9 16:16
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
谢谢已经通过了,我是初学者,想问你以下csdn是什么呀在那?
2006-12-9 16:25
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
我还想问问在《windows核心编程》里说最好用_beginthreadex()这个函数,可用这个函数要包涵哪个头文件呢?
2006-12-9 16:30
0
雪    币: 796
活跃值: (370)
能力值: ( LV9,RANK:380 )
在线值:
发帖
回帖
粉丝
6
Originally posted by haizzz
谢谢已经通过了,我是初学者,想问你以下csdn是什么呀在那?


貌似现在没有一个程序员不认识csdn 
2006-12-9 17:13
0
雪    币: 20
活跃值: (37)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
7
DWORD WINAPI ThreadFunc(LPVOID lParam)
CreateThread的第三个参数接收的是个回调函数所以你需要按照人家定义的函数式传递该函数地址所以你的ThreadFunc需要加入LPVOID参数
2006-12-10 10:42
0
雪    币: 255
活跃值: (266)
能力值: ( LV12,RANK:220 )
在线值:
发帖
回帖
粉丝
8
最初由 haizzz 发布
我还想问问在《windows核心编程》里说最好用_beginthreadex()这个函数,可用这个函数要包涵哪个头文件呢?

Routine  Required header  Compatibility  
_beginthread
<process.h>
Windows 95, Windows 98, Windows 98 Second Edition, Windows Millennium Edition, Windows Millennium Edition, Windows NT 4.0, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003

_beginthreadex
<process.h>
Windows 95, Windows 98, Windows 98 Second Edition, Windows Millennium Edition, Windows Millennium Edition, Windows NT 4.0, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003

For more compatibility information, see Compatibility in the Introduction
2006-12-10 17:51
0
游客
登录 | 注册 方可回帖
返回
//