Windows编程--关于_beginthreadex的一个宏定义
之所以写成宏定义。是因为觉得每一次对参值进行类型转换很麻烦。
#define BEGINTHREADEX(psa, cbStack, pfnStartAddr, \
pvParam, fdwCreate, pdwThreadId) \
((HANDLE)_beginthreadex( \
(void *) (psa), \
(unsigned) (cbStack), \
(PTHREAD_START) (pfnStartAddr), \
(void *) (pvParam), \
(unsigned) (fdwCreate), \
(unsigned*) (pdwThreadId)))
unsignedlong _beginthreadex( void *security, unsigned stack_size, unsigned ( __stdcall*start_address )( void * ), void *arglist, unsigned initflag, unsigned*thrdaddr );
//第1个参数:安全属性,NULL为默认安全属性
//第2个参数:指定线程堆栈的大小。如果为0,则线程堆栈大小和创建它的线程的相同。一般用0
//第3个参数:指定线程函数的地址,也就是线程调用执行的函数地址(用函数名称即可,函数名称就表示地址)
//第4个参数:传递给线程的参数的指针,可以通过传入对象的指针,在线程函数中再转化为对应类的指针
//第5个参数:线程初始状态,0:立即运行;CREATE_SUSPEND:suspended(挂起)
//第6个参数:用于记录线程ID的地址
FangSH
2011-01-05