首页 新闻 搜索 专区 学院

使用IHTMLDOCMENT2接口无法修改IE内容?

0
悬赏园豆:100 [已解决问题] 解决于 2017-06-03 10:47

已得到IE的IHTMLDOCMENT2接口,然后遍历元素找到了需要修改的元素,可以获取值,但是却无法修改值,不知是为什么。修改值会将原来的值清空。(简单的说就是只能读和清空,不能写入值。)

标题是可以修改的,

    BSTR bstrV = ::SysAllocString(L"abc");
    spDoc->put_title(bstrV);//假设spDoc是IHTMLDocument2的指针。
    spDoc->get_title(&bstrV);//可以正确的设置和获取标题

部分代码如下:

IHTMLInputElement* input;
hr=pDisp->QueryInterface(IID_IHTMLInputElement,(void**)&input);
input->get_value(&bs);  //读取值正常

input->put_value(p);  //写入值失败,会清空原有的值

夜梦多离殇的主页 夜梦多离殇 | 初学一级 | 园豆:124
提问于:2017-05-31 14:44
< >
分享
最佳答案
0

你用的还是BSTR,是否和你的空间释放有关

http://www.cnblogs.com/2018/archive/2010/08/13/1799321.html

http://www.newxing.com/S951867C11045/MyIEView.cpp

收获园豆:100
2012 | 专家六级 |园豆:19149 | 2017-06-02 09:32

非常感谢,你给的地址中的内容我早看过了,就是没看仔细。提醒了一下空间释放我才想起来了。我没有使用CString来初始化字符串,直接用了一个指针。原因是我以前没用过宽字符,对此不太了解。

原来我的写法是:BSTR p=L"abcdef";然后直接传递p作为参数。

示例中的写法是:CString p="abcddd";然后p.AllocSysString()作为参数。

我原以为写两种写法等价呢。

BSTR必须得用  SysAllocString(L"abc");来分配值。

夜梦多离殇 | 园豆:124 (初学一级) | 2017-06-03 11:08
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册