none
多线程函数中怎么使用CClientDC dc(this); RRS feed

  • 问题

  • void CTGSCPDlg::OnXianShi()

    {

    CClientDC dc(this);

    dc.SetTextColor(RGB(255, 0, 0));

    ...

    ...

    }

    上述代码是原来可以运行的代码,我现在想做成多线程的,但是出现了问题,例如:

    DWORD WINAPI OnXianShi(LPVOID lpParam)

    {

    CClientDC dc(this);  //这一句出错, 需要怎么改

    dc.SetTextColor(RGB(255, 0, 0));

    ...

    ...

    }

    2014年11月4日 4:43

答案

  • 绘图的代码最好是放在UI线程中去做,您可以在工作线程中PostMessage()/SendMessage自定义的消息到UI线程,在UI线程的自定义消息响应函数中去做绘图的操作。

    Visual C++ enthusiast, like network programming and driver development. At present is being engaged in the WinCE/Windows Mobile platform embedded development.

    • 已标记为答案 _TGS 2014年11月5日 3:51
    2014年11月4日 6:51
    版主

全部回复

  • 绘图的代码最好是放在UI线程中去做,您可以在工作线程中PostMessage()/SendMessage自定义的消息到UI线程,在UI线程的自定义消息响应函数中去做绘图的操作。

    Visual C++ enthusiast, like network programming and driver development. At present is being engaged in the WinCE/Windows Mobile platform embedded development.

    • 已标记为答案 _TGS 2014年11月5日 3:51
    2014年11月4日 6:51
    版主
  • 能教教具体步骤吗,我才刚刚学多线程,现在只会用CreateThread()创建线程,这个UI线程是在哪个函数里创建的呢
    2014年11月5日 3:54