1. RichEdit中插入的Object 触发重画方法,可以用来更新object视图
通过RichEdit 的OnPaint函数,触发 ITextHost m_pTxtHost->GetTextService()->TxDraw()接口,系统会通过回调函数调用触发 IViewObject::Draw();接口,从而重画object
2. 调整RichEdit中显示一个项目(例如图片),设置在空间中显示的宽度与像素数的幻算关系。 显示的宽度 = 图片实际像素的计算
void RichEditOleBase::CalculateExtentSize(const SIZE& sizeNature)
{
// 周围留一个像素作为选中时的黑框
HDC hDC = ::GetDC(NULL);
m_sizeExtent.cx = ::MulDiv(sizeNature.cx, 2540, GetDeviceCaps(hDC, LOGPIXELSX));
m_sizeExtent.cy = ::MulDiv(sizeNature.cy, 2540, GetDeviceCaps(hDC, LOGPIXELSY));
::ReleaseDC(NULL, hDC);
}
同时,在IRichEditOle ole 对象插入一个对象 REOBJECT reobject 对象时,ole->InsertObject(&reobject); 会调用 IOleObject::GetExtent()接口获取要插入对象的大小