ACtvieX控件绘图问题

scunet 2011-10-09 07:00:09
制作了一个ActiveX控件,测试控件的程序为一基于对话框的MFC程序,在测试程序中有一个STATIC控件,首先将此STATIC控件的HWND传递给ActiveX控件,然后ActieX控件通过线程不断在此STATIC上绘图,请问为什么我在ActiveX控件的ondraw函数类加一句AfxMessageBox(str);就能看到测试程序的STATIC静态文本控件中一直在绘图,而去掉这一句后则没有任何反应!第一个ActiveX控件,望高手指点!急!
...全文
77 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
Damon_1987 2011-10-10
  • 打赏
  • 举报
回复
楼主怎么绘的图,俺也在做绘制个表格,格式可以自定义,要求:通过invoke方法setheader,setfooter,setrownum,setfont等设置格式,传递数据,输出到打印机,给个建议,最好给个方法实现的代码,急求!实在不行,说说楼主怎么处理的绘图,Thk Thk you!
ljn398431 2011-10-10
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 fishion 的回复:]
弹出AfxMessageBox后,导致控件界面进行刷新,所以就调用OnDraw了,如果你的界面没有刷新需要的话,就不会调用OnDraw。可以在里面加上m_StaticCtrl.Invalidate()来进行刷新
[/Quote]++
诶呦 2011-10-10
  • 打赏
  • 举报
回复
AfxMessageBox()弹出导致界面重绘,所以会显示。
加个Invalidate()
fishion 2011-10-10
  • 打赏
  • 举报
回复
弹出AfxMessageBox后,导致控件界面进行刷新,所以就调用OnDraw了,如果你的界面没有刷新需要的话,就不会调用OnDraw。可以在里面加上m_StaticCtrl.Invalidate()来进行刷新
scunet 2011-10-10
  • 打赏
  • 举报
回复
是调用我传递过去的HWND的Invalidate还是ACtiveX的?但为什么我把AfxMessageBox换为Sleep也可以看到有绘图?我试了ActiveX的没反应。HWDN对应的Invalidate出错!是不是我传值有问题!能顺带说下传递HWND到ActuveX的方法吗?
scunet 2011-10-09
  • 打赏
  • 举报
回复
补充:在ActiveX的OnDraw函数中直接用sleep也可以,可是会造成测试程序忙!求大侠解释!有没有好的解决方法!

3,248

社区成员

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

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