word中ActiveX的图片问题 我们想在word中插入ActiveX控件,以显示一个图片,比如一个公章。公章不同,图片肯定就不同了,所以肯定不能当资源加入到控件中。那么这个公章图片如何随这个控件插入word中,并且如何在控件的OnDraw函数中绘制出来那? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 可以在ActiveX里面从你的网站下载图片么? 需要整理思路:1.图片的存储ATL存储说明:ATL控件是有存储机制的,请查看流存储部分。所有数据包括变量、图片等所有可以二进制的东西都可以转换为流,然后在ATL控件保存时将流保存。图片转换为流:取图片的二进制存储为流。注意:此过程需要重载ATL的保存方法Save(LPSTREAM pStm, BOOL fClearDirty),在此方法中运行类似下面的代码://得到图片流..........//存储流,CSignCtrl为控件类名,pStm为流LPSTREAMhRet = IPersistStreamInitImpl<CSignCtrl>::Save(pStm,fClearDirty);2.显示说明:其实这个过程中将流解析还原成原数据的过程。解析完成后,还原成原来的图片。注意:此过程需要重载ATL的Load(LPSTREAM pStm)方法,在此方法中实现类似下面的代码://解析流为图片.....//加载hRet = IPersistStreamInitImpl<CSignCtrl>::Load(pStm);CImage可以实现流和图片之间的相互转换。希望提供的信息对你有用! 补充一点:在下次重新打开WORD文件时,由于在控件加载时已经将流转换为图片,所以真正的图片显示过程是在OnDraw中。在第一次盖章时,是直接将图片加载在CImage中,然后调用下面的方法://触发控件重绘事件,会自动调用OnDraw。void CSignCtrl::InvalidData(bool bDataDirty, bool bViewDirty){ if (bViewDirty) { FireViewChange(); SendOnDataChange(); } if (bDataDirty) { SetDirty(TRUE); }} 怎么删除一个文件,不能恢复的 连接小问题 请问:静态链接库如何转换为普通调用,我有静态库的代码 [诚心请教]怎么实现背景贴图的窗口的大小变化! 完了!搞不定,老师不让毕业!!!! 问个简单的问题,怎么注册别人做的ATL组件? 为什么录入过程中出错? 请问?要实现GOOGLE BAR大概的思路是什么?《高分》 关于CBUTTON::SetIcon的小问题 我这个网页上的文件是什么格式呢 求助! MFC 光标资源IDC_CURSOR的属性的Device如何修改?
ATL存储说明:ATL控件是有存储机制的,请查看流存储部分。所有数据包括变量、图片等所有可以二进制的东西都可以转换为流,然后在ATL控件保存时将流保存。
图片转换为流:取图片的二进制存储为流。
注意:此过程需要重载ATL的保存方法Save(LPSTREAM pStm, BOOL fClearDirty),在此方法中运行类似下面的代码:
//得到图片流
..........
//存储流,CSignCtrl为控件类名,pStm为流LPSTREAM
hRet = IPersistStreamInitImpl<CSignCtrl>::Save(pStm,fClearDirty);
2.显示
说明:其实这个过程中将流解析还原成原数据的过程。解析完成后,还原成原来的图片。
注意:此过程需要重载ATL的Load(LPSTREAM pStm)方法,在此方法中实现类似下面的代码:
//解析流为图片
.....
//加载
hRet = IPersistStreamInitImpl<CSignCtrl>::Load(pStm);
CImage可以实现流和图片之间的相互转换。希望提供的信息对你有用!
在第一次盖章时,是直接将图片加载在CImage中,然后调用下面的方法://触发控件重绘事件,会自动调用OnDraw。
void CSignCtrl::InvalidData(bool bDataDirty, bool bViewDirty)
{
if (bViewDirty)
{
FireViewChange();
SendOnDataChange();
}
if (bDataDirty)
{
SetDirty(TRUE);
}
}