我使用CHtmlEditView
当想插入任意html时,他不能在当前光标处插入
于是查看了一个外国网站,让我先写入剪切板,在paste,可是我这样做
::SetClipboardData(CF_TEXT, hGlobal);
用Paste()时,总是直接把文本直接贴到了当前光标处。
是不是CF_TEXT的类型该改改呢?
我没找到CF_HTML这样的东东,各位帮帮忙。
非常急的
当想插入任意html时,他不能在当前光标处插入
于是查看了一个外国网站,让我先写入剪切板,在paste,可是我这样做
::SetClipboardData(CF_TEXT, hGlobal);
用Paste()时,总是直接把文本直接贴到了当前光标处。
是不是CF_TEXT的类型该改改呢?
我没找到CF_HTML这样的东东,各位帮帮忙。
非常急的
How to Paste HTML
/**************************** 函数:HrGetRangeFromSelection
功能:返回当前IHTMLTxtRange的指针 ****************************/
HRESULT CHHtmlEditCtrl::HrGetRangeFromSelection(IHTMLTxtRange ** ppRange)
{
IHTMLSelectionObject *pSel=0;
IHTMLTxtRange *pTxtRange=0;
IDispatch *pID=0;
HRESULT hr=E_FAIL; if(ppRange == NULL)
return E_INVALIDARG; *ppRange = NULL; IHTMLDocument2* pDoc = NULL;
if(GetDHtmlDocument(&pDoc))
{
if(pDoc)
{
pDoc->get_selection(&pSel);
if(pSel)
{
pSel->createRange(&pID);
if(pID)
{
hr=pID->QueryInterface(IID_IHTMLTxtRange,(LPVOID *)ppRange);
pID->Release();
}
pSel->Release();
}
pDoc->Release();
}
}
return hr;
}// 使用
IHTMLTxtRange *pRange = NULL;
if(SUCCEEDED(HrGetRangeFromSelection(&pRange)))
{
CString str;
str = "123456789";
pRange->pasteHTML(str.AllocSysString());
pRange->Release();
}
其实,我也想不用clipboard实现它,可是想了半天,脑袋转了180度,(都向后看了)还是没想出来。
只好用clipboard,可是在半路上,又出现了这个问题,又转了180度,(又正常了)
现在一贴解决了两个问题,现在反思一下,还是编程经验太少了。再次感谢,敬礼!!:)