************MFC ActiveX控件问题**************

LinuxBirdMan 2011-03-24 11:36:54
我在控件中开了一个线程,然后在线程中想往一个矩形里填充颜色,但是运行的时候,什么都没填充上去,求解答。




unsigned __stdcall CActiveXCtrl::ThreadOnDraw(void * pParam)
{
CActiveXCtrl* pThis = reinterpret_cast<CActiveXCtrl*>(pParam);
pThis->m_bOnDrawThreadOn = true;

pThis->NewBrush.CreateSolidBrush(RGB(100,100,100));

int i = 0;
while(pThis->m_bOnDrawThreadOn)
{
::GetWindowRect(pThis->hWnd, &pThis->ret);
CDC* dc = pThis->GetDC();

CRect rt;
rt.left = pThis->ret.left;
rt.top = pThis->ret.top;
rt.bottom = pThis->ret.top + 240;
rt.right = pThis->ret.left + 320;
dc->FillRect(&rt,&pThis->NewBrush);

Sleep(100);
}

_endthreadex(0);
return 0;
}
...全文
38 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
向立天 2011-03-24
  • 打赏
  • 举报
回复
这样做即使填上去了也会被刷掉
Waistcoat21 2011-03-24
  • 打赏
  • 举报
回复
不可以在线程里直接做界面相关性操作,MFC使用了线程相关的数据,你应该在线程里向界面发送自定义消息,由主界面线程来做这些事情

3,245

社区成员

发帖
与我相关
我的任务
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
  • ATL/ActiveX/COM社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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