如何在控件中改变页面上一个元素的背景色?
CComPtr<IOleContainer> spIE;
m_spClientSite->GetContainer(&spIE);
CComQIPtr<IHTMLDocument2,&IID_IHTMLDocument2> spDoc(spIE);
CComPtr<IHTMLElement> sp;
CComPtr<IHTMLStyle> style;
HRESULT hr;
if(spDoc)
{
hr=GetHTMLElement(OLESTR("Log1"),&sp);
if(FAILED(hr))
{
MessageBox("FAILED(hr)","",1);
return S_FALSE;
}
CComVariant a("对行发送放行命令成功");
sp->put_innerText(a.bstrVal);
MessageBox("a","",1);
sp->get_style(&style);
MessageBox("b","",1);
VARIANT v;
v.ulVal=RGB(255,255,255);
style->put_backgroundColor(v);
// style->put_color(v);
MessageBox("c","",1);
}
使用上面的代码对页面上id为Log1的编辑框赋值成功,但无法改变背景色
我看到msdn上说明: IHTMLElement的style为只读属性,那我要怎么样才能改变背景颜色呢?
另外
我是用IHTMLElement的get_innerText得不到编辑框中的文本(同一个IHTMLElement指针可以对编辑框赋值),得到都是空,用什么方法得到,能有代码最好,谢谢
问题点数:200、回复次数:2Top
1 楼jiangsheng(蒋晟.Net[MVP])回复于 2003-12-11 21:43:44 得分 200
1
if ( dispidMember == DISPID_HTMLELEMENTEVENTS_ONMOUSEOVER )
{
IHTMLStyle* pStyle = NULL;
HRESULT hr;
hr = m_pElem->get_style(&pStyle );
if (SUCCEEDED(hr))
{
DWORD color;
pStyle->get_color( &varColor);
pStyle->get_backgroundColor( &varBackColor );
color = GetSysColor( COLOR_HIGHLIGHTTEXT );
pStyle->put_color( CComVariant("red") );
color = GetSysColor( COLOR_HIGHLIGHT );
pStyle->put_backgroundColor( CComVariant("blue") );
}
}
else if ( dispidMember == DISPID_HTMLELEMENTEVENTS_ONMOUSEOUT )
{
IHTMLStyle* pStyle = NULL;
HRESULT hr;
hr= m_pElem->get_style(&pStyle );
if ( SUCCEEDED(hr))
{
pStyle->put_color( varColor );
pStyle->put_backgroundColor( varBackColor );
}
2 query IHtmlInputElement interface from the same object of IHTMLElement by IHTMLElement::QueryInterface,then call IHtmlInputElement::put_value
Top
2 楼lzwwiner(说我最想说的一句话)回复于 2004-02-20 12:39:30 得分 0
不可以恢复嘛。Top



