多线程用CDC画图

zhangjun917856123 2011-10-11 01:06:26
我在线程创建的时候传递了句柄,编译连接都没问题,但是就是没反应。本人是菜鸟,望各位高手指点迷津。下面是我的代码

主程序
HWND pDCview=GetDlgItem(IDC_STATIC_ACTIVEPLOT)-> m_hWnd;
pThread=AfxBeginThread(ThreadFunc,(LPVOID)pDCview,0,0,CREATE_SUSPENDED,NULL);
线程代码
UINT ThreadFunc(LPVOID lpParam)
{
CStatic* pInfo=(CStatic*)lpParam;

CDC *pDC=pInfo->GetDC();


CPen* pPenRed = new CPen; //创建画笔对象
pPenRed->CreatePen(PS_SOLID, 1, RGB(255,0,0)); //红色画笔
pDC->SelectObject(pPenRed);


for(int i=0;i<10;i++)
{
int x,y,s,t;

x=250+20*i;
y=540-j[i]*20;
s=x+20;
t=540-j[i+1]*20;

pDC->MoveTo(x, y);
pDC->LineTo(s, t);
Sleep(1000);
}
return 0;
}
...全文
315 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhangjun917856123 2011-10-12
  • 打赏
  • 举报
回复
感谢5楼,问题已经解决,结贴ing
zhangjun917856123 2011-10-11
  • 打赏
  • 举报
回复
回5楼:
1.线程运行了;
2.改成CWnd型了;
3.在最后面加ReleaseDC(pDC)的时候,说error C2660: 'ReleaseDC' : function does not take 1 parameters;
是不是句柄没传过来的缘故呀?
凤矶 2011-10-11
  • 打赏
  • 举报
回复
1。你的线程初始是挂起的,CREATE_SUSPENDED
2。pDCview是CStatic*类型的么?
3。DC的释放与DC对象的复位缺失。

请用谷歌搜索 “MTMDI”。用多线程没有问题。可以退一步用定时器,简单些。
zhangjun917856123 2011-10-11
  • 打赏
  • 举报
回复
1楼:
error C2065: 'Invalidate' : undeclared identifier
zhangjun917856123 2011-10-11
  • 打赏
  • 举报
回复
需要实时显示啊
许文君 2011-10-11
  • 打赏
  • 举报
回复
请不要多线程操纵界面绘制,这样会给你带来无穷尽得问题。
shiyunqiang 2011-10-11
  • 打赏
  • 举报
回复
在sleep前面加入Invalidate(FALSE);

16,473

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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