多线程函数是全局函数,请问在全局函数中可以用CDC类成员函数么,该如何在全局函数中显示图像呢,请高手指教,非常感谢。

解决方案 »

  1.   

    线程函数不是有个参数吗?你把画图用的DC的地址传进去不就行了?
    DWORD WINAPI ThreadFunc(LPVOID lpParam)
    {
        CDC* pDC = (CDC *)lpParam;
        pDC->……
    }
      

  2.   

    这种方法很不好。你不应该在一个线程中操作另一个线程创建的窗口的DC。正确的作法是只在主线程中显示,子线程只负责准备显示数据,准备完毕后用消息通知主线程,由主线程把它显示出来。
      如果子线程一定要显示,最好也只在自己(创建)的窗口中显示。也就是说,窗口的显示应该只由窗口所属的线程负责。这时你可以使用MFC中的UI线程类或在线程函数中用CreateWindows(Ex)创建自己的窗口(这样你的线程就必须有一个消息循环而不能再是简单的顺序结构的代码了)。不过最好还是一个进程只有一个线程(主线程)有UI,并且由这个线程负责所有UI相关的IO。
      

  3.   

    不用怕,按 steedhorse(晨星) 说的干就可以了