关于AfxBeginThread的一个奇怪的现象,求大牛给个解释!解决办法

关于AfxBeginThread的一个奇怪的现象,求大牛给个解释!
今天在调试一个MFC程序时发现的问题,简单的代码如下

代码一:
UINT ThreadFunc(LPVOID lpParam)
{
int *Info = (int*)lpParam;

CString strTemp;
strTemp.Format("%d",*Info);

AfxMessageBox(strTemp);

return 1;
}


void CAfxDlg::OnOK() 
{
// TODO: Add extra validation here
  int i =5;
while(i>0)
{

AfxBeginThread(ThreadFunc,&i);

i--;
}


//CDialog::OnOK();
}

代码二:
UINT ThreadFunc(LPVOID lpParam)
{
int *Info = (int*)lpParam;

CString strTemp;
strTemp.Format("%d",*Info);

AfxMessageBox(strTemp);

return 1;
}


void CAfxDlg::OnOK() 
{
// TODO: Add extra validation here
  int n,i =5;
while(i>0)
{

n=i;
AfxBeginThread(ThreadFunc,&n);

i--;
}


//CDialog::OnOK();
}


我所期望的结果是弹出0、1、2、3、4,也就是代码一运行结果,但代码二运行结果为1、1、2、3、4,这是为什么?

------解决方案--------------------
探讨

刚又好好看了下,明白了.其实我所期望的结果是弹出1、2、3、4、5,由于函数传递的是指针而不是值所以有上述现象.