为了建立一个新的线程,写了一个线程函数,想象让其实现绘图功能,可是由于线程函数是静态函数或者全局函数,所以里面没有了this指针,我怎么样才能让其在view上绘图呢?
最好写一个伪代码指导我一下。
谢谢先!

解决方案 »

  1.   

    在启动线程的时候将你的View的指针作为参数传递给线程函数如;AfxBeginThread(threadfunc,this);UINT threadfunc(LPVOID lparam)
    {
        CXXXView* pView = (CXXXView*)lparam;
        pView->//在这里访问View的函数或成员变量
        .........
        ........
        return 0;
    }
      

  2.   

    CreateThread(NULL, 0, XXXThread, this, 0, NULL);<-把你的View的指针用this传进去。
    //你的线程函数
    DWORD WINAPI XXXThread(LPVOID lp)
    {
      CYouView* pView = (CYouView*)lp;
      pView->GetDc();
      ...画图...
    }
      

  3.   

    1:如果线程不是在view中启动的呢?怎么传递view的指针?
    2:如果要传递的参数不只是view的指针,那么是不是要把所有的参数做成一个struct传递过去呢 ?
    谢谢
      

  4.   

    1:如果线程不是在view中启动的呢?怎么传递view的指针?
    你可以先取得view的指针,你的线程是在什么地方启动的2、如果需要传递的参数不止一个,可以想楼主说的那样实现!
      

  5.   

    我是在frame中建立的,怎么样取得view的指针啊?
      

  6.   

    use GetActiveView to get the pointer of your view class !
    CView* GetActiveView( )AfxBeginThread(threadfunc,GetActiveView());UINT threadfunc(LPVOID lparam)
    {
        CXXXView* pView = (CXXXView*)lparam;
        pView->//在这里访问View的函数或成员变量
        .........
        ........
        return 0;
    }
    try !