停止を待つなら
for(n=0; n<ThreadNum; n++)
{
if(m[n]) WaitForSingleObject(m[n], INFINITE);
}

というかreinterpret_castってC++じゃねーかww