AfxBeginThread 两种调用方式的执行
1. 定义: CWinThread* m_pABCThread;
2. 调用方式1 m_pABCThread= AfxBeginThread(CABCForm::ABCThreadProc, GetSafeHwnd(),THREAD_PRIORITY_NORMAL);
调用方式2 m_pABCThread= AfxBeginThread((AFX_THREADPROC)CABCForm::ABCThreadProc, pParam);
3. 线程函数:
UINT CABCForm::ABCThreadProc(LPVOID pParam)
{
::PostMessage((HWND) pParam, WM_THREADDONE, 0, 0);
AfxMessageBox("TrigThreadProc Done 1"); // 调用方式一 和调用方式二 都执行到此
return 0; // ends the thread
}
4. 加一个消息响应函数 ON_MESSAGE(WM_THREADDONE, ABCThreadDone)
5. 线程结束后的消息响应函数:
LRESULT CABCForm::ABCThreadDone(WPARAM wParam, LPARAM lParam)
{
AfxMessageBox("TrigThreadProc Done 2");// 调用方式一执行到此函数, 调用方式二 不能执行到此函数
// 完成,按键弹起 return 0;
}
两种调用方式, 一种可以执行消息响应函数, 另一种不可以执行。
我想要对线程函数传递参数, 可是第一种方式我不知道如何传递参数,第二种方式可以传递参数,却有不能执行消息响应函数
请大虾指点一二.