HOWTO让IWebBrowser2使用剪切/复制编辑。 [英] HOWTO get IWebBrowser2 to use Cut/Copy editing.
问题描述
HOWTO让IWebBrowser使用剪切/复制编辑。
请帮忙,
我在VC ++对话框中使用IWebBrowser2控件。标准HTML控件,例如< input type = text>不要让用户剪切/复制文本。奇怪的是,粘贴操作确实有效。
我知道2006年的文章叫做:
Bill是否忘记了WebBrowser控件的document.selection?
链接: http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=666932& ; SiteId = 1
我也知道有关MSDNML编辑功能的MSDN文章。
我知道document.designMode =" On"。
< p align = left>但没有任何效果。
我认为答案必须围绕以下事项之一:
1)在OnInitDialog中,调用 IWebBrowser2的控件来执行某些操作。
------我试过这个用 m_spHtmlDoc - > ; put_designMode (( BSTR " CBStr ( "开" ))
2)向HTML中添加一些内容,就像< body>中的onload一样。元素本身:
-----< ; body onload ='document.designMode =" On" ;;'>
3)添加每个< input>,< textarea>的额外逻辑我希望剪切/复制的其他HTML控件。
我有更多信息。
我还尝试过MSDN文档来调用 DISPID_AMBIENT_USERMODE,这也不起作用。
顺便说一下,要重现问题,请构建一个基于 CDHtmlDialog的简单MFC示例对话框。然后在OnInitDialog中,添加以下代码:
=========================================== ==========
在CDHtmlDialog之后添加到OnInitDialog
:: OnInitDialog ();
SAFEARRAYBOUND SAFEARRAYBOUND_Temp
;
SAFEARRAYBOUND_Temp
。 cElements = 1 ;
SAFEARRAYBOUND_Temp
。 lLbound = 0 ; < font size = 2>
COleSafeArray COleSafeArray_Temp
;
COleSafeArray_Temp
。 创建 ( VT_VARIANT , 1 , & SAFEARRAYBOUND_Temp );
_variant_t _variant_t_Temp
;
_variant_t_Temp
= L "< html>< input type = text value = \"尝试复制我!!! \">< / html>" ;
LONG LONG_Temp
< font color ="#ff0000"size = 2> = 0 ;
COleSafeArray_Temp
。 PutElement (& LONG_Temp < font color ="#ff0000"size = 2>, & _variant_t_Temp );
IDispatch
* pIDispatch = NULL ;
m_pBrowserApp
- > get_Document (& pIDispatch );
IHTMLDocument2
* pIHTMLDocument2 = NULL ;
IHTMLDocument3
* pIHTMLDocument3 = NULL ;
pIDispatch
- > QueryInterface ( IID_IHTMLDocument2 , ( void **) & pIHTMLDocument2 );
pIDispatch
- > QueryInterface ( IID_IHTMLDocument3, ( void **) < font color ="#ff0000"size = 2>& pIHTMLDocument3 );
pIHTMLDocument2
- > write ( COleSafeArray_Temp 。 parray );
pIHTMLDocument2
- > close ();
HOWTO get IWebBrowser to use Cut/Copy editing.
Please help,
I am using the IWebBrowser2 control in a VC++ dialog. Standard HTML controls like <input type=text> do not let the user cut/copy text from them. Strangely, paste operations do work.
I am aware of the article from 2006 called:
Did Bill forget document.selection for WebBrowser control?
Link: http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=666932&SiteId=1
I'm also aware of the MSDN article on making MSHTML edit capable.
And I am aware of the document.designMode = "On".
But nothing works.
I envision the answer must revolve around one of these things:
1) In the OnInitDialog, a call to the IWebBrowser2's control to do something.
------ I have tried this with m_spHtmlDoc->put_designMode((BSTR) CBStr("On"))
2) Add something to the HTML like an onload inside the <body> element as such:
----- <body onload='document.designMode = "On";'>
3) Adding extra logic to each and every <input>, <textarea> and other HTML controls I desire cut/copy with.
I have more information.
I have also tried the MSDN documentation's to invoke DISPID_AMBIENT_USERMODE, and that didn't work either.
By the way, to reproduce the problem, build a simple MFC sample dialog based around CDHtmlDialog. Then in the OnInitDialog, add this code:
=====================================================
Add to OnInitDialog after the CDHtmlDialog
::OnInitDialog();
SAFEARRAYBOUND SAFEARRAYBOUND_Temp
;SAFEARRAYBOUND_Temp
.cElements = 1;SAFEARRAYBOUND_Temp
.lLbound = 0;COleSafeArray COleSafeArray_Temp
;COleSafeArray_Temp
.Create(VT_VARIANT, 1, &SAFEARRAYBOUND_Temp);_variant_t _variant_t_Temp
;_variant_t_Temp
= L"<html><input type=text value=\"Try to copy me!!!\"></html>";LONG LONG_Temp
= 0;COleSafeArray_Temp
.PutElement(&LONG_Temp, &_variant_t_Temp);IDispatch
*pIDispatch = NULL;m_pBrowserApp
->get_Document(&pIDispatch);IHTMLDocument2
*pIHTMLDocument2 = NULL;IHTMLDocument3
*pIHTMLDocument3 = NULL;pIDispatch
->QueryInterface(IID_IHTMLDocument2, (void **) &pIHTMLDocument2);pIDispatch
->QueryInterface(IID_IHTMLDocument3, (void **) &pIHTMLDocument3);pIHTMLDocument2
->write(COleSafeArray_Temp.parray);pIHTMLDocument2
->close();
这篇关于HOWTO让IWebBrowser2使用剪切/复制编辑。的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!