jiangsheng 老大帮忙,Word控件问题

jzg1234 2008-03-12 03:40:17
我用ATL写了一个控件用来显示GIF图片,要求能显示成透明背景的,

将此控件用到网页中可以正常显示,背景透明,只显示了图片的有效部分

但是放到word中,无论怎样设置都显示一个白色的背景色,

我希望实现的效果跟电子签章那个应该差不多的
在处理时 IE 和 WORD 有什么差别,现在一点头绪都没有,经理一直在催

我把控件添加到word中时使用的是

ActiveDocument.Shapes.AddOLEControl 方法

我看word中的shape对象也没有可设置背景样式的方法


我发这个问题,都没有人给顶一下,没办法,只好请老大出手了~~

谢了先~
...全文
121 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
jzg1234 2008-03-14
  • 打赏
  • 举报
回复

OK 了,这个俺终于搞定了,虽然达不到原来想要的效果不过也能凑和了.

实现方法就是把图片的无效部分去掉,将有效部分复合成HRGN 然后设置窗体为此形状就OK了

不过还有其他的问题,进一步测试中~~~

好了,看来可以结帖了
jzg1234 2008-03-13
  • 打赏
  • 举报
回复
可是背景不是单色的啊,
有好多东西的
在控件的WM_ERASEBKGND事件时,向Word窗口发送WM_ERASEBKGND和WM_PAINT消息让他重新绘制
然后返回NULL_BRUSH也不行,仍然不能在画WORD的窗口后再画控件,怀疑是不是在控件区域内WORD根本就不绘制这部分啊~~

还是我添加控件的方法不对啊?给Word添加控件我使用的是Word::_Application->_Document->Shapes->AddOLEControl 方法

返回的是Word::Shape 对象,是不是这个对象本身有什么问题啊?

有做过这方面的没,帮忙了各位高手~~~
jzg1234 2008-03-13
  • 打赏
  • 举报
回复
这个返回TRUE或者 返回 NULL_BRUSH 的HBRUSH 都只是不擦除背景而已,并不是真的透明了,当WORD最小化回复后,显示的是原来屏幕上的区域为背景,或者别的窗口覆盖时也不行.

我用Spy4win 看了下,发现在IE下面控件是没有窗口的,而在WORD下面是有一个窗口,窗口的类名为 "ATL:{16进制的数字}",这样处理起来就不一样了,此窗口的样式为 WS_CHILDWINDO|WS_VISIBLE|WS_CLIPSIBLINGS|WS_CLIPCHILDREN Word在绘制时根本就不绘制这个控件的区域.

我看看WORD显示窗口的类去~~

不过貌似我可以使用HRGN 来控制窗口的样子,研究一下下~~
jameshooo 2008-03-13
  • 打赏
  • 举报
回复
你见过word能设置背景图片?我是没见过。在WM_ERASEBKGND消息什么都不要做,直接返回TRUE,不过这样会有图像残留,动画就不行。
如果控件下面还有其它控件,我也不知道如何获得背景图像
jameshooo 2008-03-12
  • 打赏
  • 举报
回复
应该是控件设计的问题。不知道你的控件是怎么控制图片绘制的,应该向容器索取背景色属性值,绘制的时候以背景色代替图片中透明的像素。
jzg1234 2008-03-12
  • 打赏
  • 举报
回复
我已经写了 不过 提交的时候提示没有这个专家

搞不清楚怎么回事
iyranly 2008-03-12
  • 打赏
  • 举报
回复
你发帖的时候应该“向专家提问”,在里面输入老大的名字,系统会有信息通知他,他就知道了。你这样,他即使知道这个问题怎么解决,但是如果他比较忙没有浏览帖子,且不是你的帖子就会一直放空!

你可以再给他发一个消息,在消息中附上你这个帖子的链接,如果他有空,会来给你看。

3,245

社区成员

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

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