在view里面 我定义了一个结构体
typedef struct
{
HWND hwnd;
int i;
}tt;
1)在view的开头用 tt hi;定义这个结构体变量后传递给ondraw里面生成的线程(效果是弹出窗口) 一切正常,客户区刷新的时候就弹出窗口2)在view的开头用 tt* hi;定义并赋值  编译通过 但程序一运行就当掉3)在ondraw里面用 tt* hi=new tt; 定义赋值 能运行程序 但只弹出一次窗口 以后刷新界面时就不弹了4)在view的开头用tt* hi=new tt;定义   程序运行正常 但不弹出窗口 AfxBeginThread(threadproc,(LPVOID)hs); //ondraw里面的         UINT threadproc(LPVOID pParm)
{
tt *phs=(tt*)pParm;
CString str;
str.Format(_T("%d"),phs->i);
MessageBox(phs->hwnd,str,0,0);
return 0;
}                           //弹出窗口
我被这些问题搞的头大到底用new在上面的代码中产生了什么效果? 为什么会这样?
哪位愿意给我解释一下?

解决方案 »

  1.   

    AfxBeginThread(threadproc,(LPVOID)&hs);//指针的时候是这样的
      

  2.   

    phs->hwnd是窗口对象,他并不是总有效的,所以你的线程运行前都用初始化hwnd
      

  3.   

    上面都是hi什么的,后面怎么又出来个hs?另外,在刷新的地方来生成线程,当心出人命哦。
      

  4.   

    hi hs 是同一个 写错了。。 呵呵
      

  5.   

    2)在view的开头用 tt* hi;定义并赋值  编译通过 但程序一运行就当掉
    4)在view的开头用tt* hi=new tt;定义   程序运行正常 但不弹出窗口
    ————————————————————————————--————
    这个有什么区别,就差赋值?那是不是你赋值不对!
      

  6.   

    赋值也一样的  
    用new 和 不用new定义 一样吗?