注册 登录
编程论坛 C语言论坛

线程函数_beginthread怎么添加参数呢?

a451410 发布于 2025-03-11 20:36, 402 次点击
在使用_beginthread函数时候,其中第一个参数是个函数,请问如果这个函数如果要带参数该怎么办呢?我试了试直接添加并不行,会报错.如下:
这样不行,参数HWND传不进去,会提示void类型的实参什么什么不兼容
_beginthread(_writeEdit(hwnd), 0, NULL);
_wrinteEdit(HWND hwnd)
{
 ...
 ...
}
1 回复
#2
rjsp2025-03-12 08:52
程序代码:
#include <windows.h>
#include <process.h>

#include <stdio.h>

void _wrinteEdit( HWND hWnd )
{
    printf( "hWnd = %p\n", hWnd );
}

void __cdecl start_address( void* parg )
{
    _wrinteEdit( (HWND)parg );
    _endthread();
}

int main( void )
{
    HWND hWnd = (HWND)0x01234567;
    uintptr_t ret = _beginthread( &start_address, 0, (void*)hWnd );
    WaitForSingleObject( (HANDLE)ret, INFINITE );
}

不要使用 _beginthread,它有太多的问题,应该代替以 _beginthreadex
不要使用 _beginthread/_beginthreadex 等私有函数,应该使用C标准库中的 thrd_create

1