MFC对话框程序 AfxBeginThread 传参数的问题
主对话框调用 AfxBeginThread 开一个线程,如果单纯传入 this(主对话框指针),可以在线程函数内正确接收到(传入时和接收的地址打印值一致),我需要加一个标志位进去,于是定义了一个struct,如下:
struct AAA
{
CMainDlg * pDlg;
int nFlag;
}
给AfxBeginThread 传入了一个AAA对象的地址,示例代码如下:
AAA a;
a.pDlg = this;
a.nFlag = 1;
AfxBeginThread (Fun ,&a ,xxxxxx);
线程内接收就是
UINT Fun(LPVOID pParam)
{
AAA *p = (AAA*)pParam;
...
}
这样使用的时候我发现,那个nFlag传进去都不对,打印出来是128;而pDlg也不对,
我改成下边的以后,那个nFlag传递正确了,可那个对话框指针还是时好时坏,奇怪了。
AAA *a new AAA;
a->pDlg = this;
a->nFlag = 1;
AfxBeginThread (Fun ,a ,xxxxxx);
delete a;
如果只传this的话,线程内接收的this就是始终是正确的。哪位知道原因,不吝赐教!