描述:
我用VS2003 ATL Control 向导创建了一个控件,我用ActiveX测试容器,测试的时候很好,但是我如何才能把这个控件插入到RichEdit里呢 我是在对话框中的一个RichEdit。有人知道可以给个代码例子
下面的例子是我从网上找的,但是插入后有个问题就是插入后部创建窗口,因为我里面有一个消息处理的一些函数会处理WM_CREATE 和 WM_PAINT 等消息,用那个测试容器测试是正常的,但是我插到对话框的RichEdit中的时候就是不行,没有任何消息,是不是我的插入代码的问题,或者我少做了什么
有谁知道,这里我先谢谢了
LPSTORAGE lpStorage=NULL;
LPLOCKBYTES lpLockBytes = NULL;
::CreateILockBytesOnHGlobal(NULL, TRUE, &lpLockBytes);
::StgCreateDocfileOnILockBytes(lpLockBytes,
STGM_SHARE_EXCLUSIVE | STGM_CREATE | STGM_READWRITE, 0, &lpStorage);
CComPtr<IRichEditOle> pRichEditOle = m_Ctrl_RichEdit.GetIRichEditOle();
IFCOMUIPtr pCOMUI;
HRESULT hr;
hr = pCOMUI.CreateInstance(__uuidof(FCOMUI));
REOBJECT reo;
reo.cbStruct = sizeof(reo);
reo.clsid = __uuidof(FCOMUI);
reo.cp = REO_CP_SELECTION;
reo.dvaspect = DVASPECT_CONTENT;
reo.dwFlags = REO_BELOWBASELINE;
reo.dwUser = 0;
hr = pCOMUI.QueryInterface(IID_IOleObject, &reo.poleobj);
hr = pRichEditOle->GetClientSite(&reo.polesite);
hr = reo.poleobj->SetClientSite(reo.polesite);
reo.pstg = lpStorage;
reo.sizel.cx = reo.sizel.cy = 0;
hr = pRichEditOle->InsertObject(&reo);
hr = ::OleSetContainedObject(reo.poleobj, TRUE);
reo.poleobj->Release();
reo.polesite->Release();
lpStorage->Release();
您可能想查找下面的文章:
- QQ图文发送方式?可否将OCX控件当作OLE对象插入CRichEditCtrl?ADO如何读取XML中的记录集?寻求技术高人请进
- 想做一个可插入到CRichEditCtrl中显示GIF动画的组件,遇到点问题,请朋友们帮忙指点谢谢
- ATL做的一个控件,用于插入到CRichEditCtrl中显示GIF图片,控件中用一个线程显示GIF图片,
- ATL写的ActiveX控件,在CRichEditCtrl容器里怎样控制ActiveX大小?
- 如何开发一个OLE组件,可以插入到OLE容器中使用比如插入CRichEditCtrl?
- 急问:CRichEditCtrl中StreamOut用法出错的问题???????????????
- CRichEditCtrl插入ole图片与Ctrl+V插入图片不一样??
- 请教CRichEditCtrl修改字间距问题
- CRichEditCtrl和数据库交互!
- CRichEditCtrl里无窗口的控件怎么添加窗口提示?