Обычный вызов функции:
ulRes =CalculateIt( Param1,
Param2,
...
ParamN,
MyCallBack,
(void*)&(this->m_hWnd),
&bStop);
Вызов в новом потоке:
stParam.Param1 = Param1;
stParam.Param2 = Param2;
....
stParam.ParamN = ParamN;
stParam.fnMyCallBack = MyCallBack;
stParam.hWnd = this->m_hWnd;
stParam.pbStop = &bStop;
hThread = (HANDLE)_beginthreadex(NULL,
0,
(PTHREAD_START) ProcessThread,
(void*)&stParam,
0,
&uiThrdaddr
);
unsigned int ProcessThread(void* pParam)
{
unsigned int uiRes = 0;
LPDLGPARAM pDatas = (LPDLGPARAM) pParam;
uiRes = CalculateIt( pDatas->Param1,
pDatas->Param2,
...
pDatas->ParamN,
pDatas->fnMyCallBack,
(void*)&(pDatas->hWnd),
pDatas->pbStop
);
return uiRes;
}
Еще раз повторю, хендл приходит тот же самый, я проверял.