为什么 BeginThread 创建的线程中的画图代码没有效果?

lwglucky 2014-09-26 12:15:14
为什么 BeginThread 创建的线程中的画图代码(MovetoEx,LineTo)没有效果? 代码移除线程调用就没问题。
...全文
178 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
s11ss 2014-09-26
  • 打赏
  • 举报
回复
主线程负责画图啊,子线程处理数据就行了
lwglucky 2014-09-26
  • 打赏
  • 举报
回复
是Canvase. 大致代码如下: void StartGifPlay(HDC Hdc, WORD x, WORD y, TMemoryStream* str , bool bStream) //播放GIF动画 { Cs.Hdc = Hdc; //// Hdc为form上的一个 frmShow->img->Canvas->Handle ; BeginThread(0,0, (TThreadFunc )ShowImg,( LPVOID )(&Cs),0,0); //开启新进程以播放GIF } long __fastcall ShowImg(LPVOID pParam) { Cs * pcs = (Cs *)pParam; HDC dc = pcs ->Hdc ; MovetoEx(dc,0,0,0); Lineto(dc,100,100); <<===这两句绘图代码无效,界面上看不到效果 return 0; } ========= 如果把画图代码放在线程外就没问题。
iamduo 2014-09-26
  • 打赏
  • 举报
回复
画图代码如果是用 Canvas,那么需要资源保护。 我不记得是 TCanvas.BeginUpdate & EndUpdate, 还是 Lock,UnLock 了。 我建议你先贴一下自己的代码。

16,747

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
  • 语言基础/算法/系统设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧