는이 같은 HTML 소스의 조각을 가지고HTML 소스 코드에서 글꼴 색을 어떻게 얻을 수 있습니까?
<FONT color=#5a6571>Beverly Mitchell</FONT> <FONT color=#5a6571>Shawnee Smith</FONT> <FONT color=#5a6571>Glenn Plummer</FONT> <NOBR>more >></NOBR>
나는이처럼 "컬러"값을 검색하려고 :
MSHTML::IHTMLDocument2Ptr htmDoc1 = NULL;
SAFEARRAY *psaStrings1 = SafeArrayCreateVector(VT_VARIANT, 0, 1);
CoCreateInstance(CLSID_HTMLDocument, NULL, CLSCTX_INPROC_SERVER, IID_IHTMLDocument2, (void**) &htmDoc1);
VARIANT *param1 = NULL;
HRESULT hr = SafeArrayAccessData(psaStrings1, (LPVOID*)¶m1);
param1->vt = VT_BSTR;
param1->bstrVal = SysAllocString(varSrc1.bstrVal);
hr = SafeArrayUnaccessData(psaStrings1);
hr = htmDoc1->write(psaStrings1);
MSHTML::IHTMLElementPtr pElemBody1 = NULL;
MSHTML::IHTMLDOMNodePtr pHTMLBodyDOMNode1 =NULL;
hr = htmDoc1->get_body(&pElemBody1);
if(SUCCEEDED(hr))
{
hr = pElemBody1->QueryInterface(IID_IHTMLDOMNode,(void**)&pHTMLBodyDOMNode1);
if(SUCCEEDED(hr))
{
ProcessDomNodeSmartWrapper(pHTMLBodyDOMNode1, ProcTgtTagStrVec);
}
}
long lLength = 0;
MSHTML::IHTMLElementCollectionPtr pElemColl1 = NULL;
MSHTML::IHTMLElementPtr pChElem1 = NULL;
MSHTML::IHTMLStylePtr pStyle1 = NULL;
IDispatchPtr ppvdisp1 = NULL;
hr = htmDoc1->get_all(&pElemColl1);
hr = pElemColl1->get_length(&lLength);
for(long i = 0; i < lLength; i++)
{
_variant_t name(i);
_variant_t index(i);
ppvdisp1 = pElemColl1->item(name, index);
if(ppvdisp1 && SUCCEEDED(hr))
{
hr = ppvdisp1->QueryInterface(IID_IHTMLElement, (void **)&pChElem1);
if(pChElem1 && SUCCEEDED(hr))
{
BSTR bstrTagName = NULL;
pChElem1->get_tagName(&bstrTagName);
hr = pChElem1->get_style(&pStyle1);
if(pStyle1 && SUCCEEDED(hr))
{
_variant_t varFtCol;
hr = pStyle1->get_color(&varFtCol);
if(hr = S_OK && varFtCol)
{
hmStyles1[wstring(varFtCol.bstrVal)] = L"FontColor";
}
}
if(bstrTagName)
SysFreeString(bstrTagName);
} // if pStyle && SUCCEEDED(hr)
}//if ppvdisp && SUCCEEDED(hr)
}//for
하지만 "칼라"값을 얻을 수 없다 - varFtCol.bstrVal
은 프로그램을 디버깅 할 때 잘못된 포인터입니다.
- varFtCol {???} _variant_t - tagVARIANT BSTR = 0x00000000 tagVARIANT vt 8 unsigned short - BSTR 0x00000000 wchar_t * CXX0030: Error: expression cannot be evaluated
#5a6571
이 진수 색상 (90,101,113)의 RGB 값으로 나타낸다입니다 :이 varFtCol
내가 프로그램을 디버깅 할 때 보여 것입니다.
어떻게 색 정보를 얻을 수 있습니까?
나는 색상이 IHTMLStyle의 일부라고 생각한다. 그래서 "Font"에서 스타일을 얻고 색상 속성에 액세스하려고했다. – daiyue
스타일과 속성의 차이점은 무엇입니까? – daiyue
글꼴 태그의 경우 태그 자체의 일부로 또는 글꼴 스타일의 일부로 색상을 지정할 수 있습니다. 또는 . 귀하의 코드는 style = ""을 얻으려고하지만 color = ""을 가져와야합니다. –