如何改变ATL的大小 目前已在richedit中可以插入表示图片的COM,但现在截图转输时,因为网络的延时,所以在图片还没接收完毕用一张临时的图片代替。接收结束后再把实际的图片显示出来。但现在ATL的大小,始终是临时图片的大小,要在怎么改变?请大家帮下忙,谢谢。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 SIZEL szlPixels, szlMetric;szlPixels.cx = m_pDrawImg->GetWidth() ;szlPixels.cy = m_pDrawImg->GetHeight() ;AtlPixelToHiMetric(&szlPixels, &szlMetric);SetExtent(DVASPECT_CONTENT, &szlMetric);我已经在图片重新加载时写了如上代码 要通知容器新的大小,然后容器会来向控件请求设置新的尺寸值。调用IOleInPlaceSite::OnPosRectChange来告诉容器大小,它会调用你的IOleInPlaceObject::SetObjectRects,此时你就能改变窗口大小了。 照你的方法试过了IOleClientSite* pClientSite = reo.polesite;IOleInPlaceSite* pInPlaceSite=NULL;if(SUCCEEDED(pClientSite->QueryInterface(IID_IOleInPlaceSite,(void**)&pInPlaceSite))){ //重新调整大小 CRect newRc; newRc.left = 0; newRc.top = 0; newRc.right = 16; newRc.bottom = 16; hr = pInPlaceSite->OnPosRectChange(&newRc); }hr = pInPlaceSite->OnPosRectChange(&newRc); 执行到这里,总是还回e_nointerface这是什么原因了 是不是com要继承IOleInPlaceSite这个接口?? site是容器要实现的,组件要实现的是IOleInPlaceObject接口 嗯,,已经有了IOleInPlaceObject这个接口,但在richedit中调用hr = pInPlaceSite->OnPosRectChange(&newRc); 还回s_ok,,但是图片大小没有改变,,要在组件中重写SetObjectRects 方法不,,我曾重写过,跟踪调试时,可以跳进来。但是图片还是没有变化大小。达人,这是什么原因啊,,我还是com初学者,问题不免低级 拆分视图滚动条问题 那位技术高手帮帮忙看看 visual 6.0下使用ADO+Oracle开发出现连接错误 关于UDP的问题 VC6中右键弹出菜单问题 急求VC++界面编程技术 播放器控件,有很多函数,没有帮助文档,不知道怎么用,还有浏览器控件。 小问题 怎么样才能均衡多核CPU中各个核的占有率? 如何改变文字编辑框里的光标!可否定制?100分 RegisterClassEx()函数注册失败 返回0 如何拖动放大后的图像? vc 换行
szlPixels.cx = m_pDrawImg->GetWidth() ;
szlPixels.cy = m_pDrawImg->GetHeight() ;AtlPixelToHiMetric(&szlPixels, &szlMetric);
SetExtent(DVASPECT_CONTENT, &szlMetric);我已经在图片重新加载时写了如上代码
调用IOleInPlaceSite::OnPosRectChange来告诉容器大小,它会调用你的IOleInPlaceObject::SetObjectRects,此时你就能改变窗口大小了。
IOleClientSite* pClientSite = reo.polesite;
IOleInPlaceSite* pInPlaceSite=NULL;
if(SUCCEEDED(pClientSite->QueryInterface(IID_IOleInPlaceSite,(void**)&pInPlaceSite)))
{
//重新调整大小
CRect newRc;
newRc.left = 0;
newRc.top = 0;
newRc.right = 16;
newRc.bottom = 16;
hr = pInPlaceSite->OnPosRectChange(&newRc);
}hr = pInPlaceSite->OnPosRectChange(&newRc); 执行到这里,总是还回e_nointerface这是什么原因了