VerySource

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 744|回复: 1

关于BeginThreadex()函数

[复制链接]

3

主题

4

帖子

5.00

积分

新手上路

Rank: 1

积分
5.00
发表于 2020-3-14 16:00:01 | 显示全部楼层 |阅读模式
问题(1)在一个类的成员函数的程序中我有以下语句:

h[0]=(HANDLE)::_beginthreadex(NULL,0,bank_allocation,NULL,0,&uld);

其中bank_allocation是类中另一个成员函数的名称,其声明如下:

UINT __stdcall Cresource::bank_allocation(LPVOID lpParam);

编绎出错(出错位置就是上面使用beginThreadex()处),提示如下:
G:\resource\resource.cpp(100) : error C2664: '_beginthreadex' : cannot convert parameter 3 from 'unsigned int (void *)' to 'unsigned int (__stdcall *)(void *)'
        None of the functions with this name in scope match the target type
出错原因是参数类型不对,想不通,bank_allocation()这个函数的类型我已经声明为UINT __stdcall 了啊,高手指教一下,
(2)如何使用beginThreadex向新线程传递参数?比如,要传一个整形变量
非常感谢
回复

使用道具 举报

0

主题

4

帖子

5.00

积分

新手上路

Rank: 1

积分
5.00
发表于 2020-6-11 22:00:01 | 显示全部楼层
&uld  就是 lpParam,传入uld 这个结构的指针。在bank_allocation(LPVOID lpParam);在转换回来就可以了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|CopyRight © 2008-2023|verysource.com ( 京ICP备17048824号-1 )

快速回复 返回顶部 返回列表