关于线程函数的参数,该如何处理

关于线程函数的参数
void ThreadFunc(HWND pParam)
{
CWnd* pDlg = (CWnd *) pParam;
m_bRun = true;
while(m_bRun)
{
::PostMessage(pDlg->m_hWnd, WM_RECEIVE_MESSAGE, 0, (LPARAM)EV_RXCHAR);
Sleep(1000);

}

为什么参数传不进来。。

hThread=CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)ThreadFunc, GetSafeHwnd(), 0, &ThreadID);


hThread,ThreadID都是public成员变量
------解决方案--------------------
你打算穿对话框的指针吧?
把CreateThread中的GetSafeHwnd()该为this
------解决方案--------------------
。。。GetSafeHwnd返回的是一个句柄,在线程里要么直接用句柄,你要用指针就传指针。
------解决方案--------------------
一般的参数是void *
------解决方案--------------------

本身就是一个 32 or 64 位的值

------解决方案--------------------
DWORD WINAPI ThreadProc(LPVOID lParam);
------解决方案--------------------
DWORD WINAPI ThreadProc(LPVOID lParam);
------解决方案--------------------
_beginthreadex()吧。CreateThread()多线程下不安全。
------解决方案--------------------
引用:
_beginthreadex()吧。CreateThread()多线程下不安全。

CreateThread()是安全的,我一直用这个函数。所谓的不安全只是线程关闭时候需要手动关闭句柄,当然也可以一创建就把句柄关了。