Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Architektura textových služeb (TSF) umožňuje textové službě poskytovat atributy zobrazení textu. Aplikace tak může zobrazit další vizuální zpětnou vazbu. Například textová služba kontroly pravopisu může zvýraznit chybně napsané slovo červeným podtržením. Atributy zobrazení, které lze poskytnout, jsou definovány strukturou TF_DISPLAYATTRIBUTE a zahrnují barvu textu, barvu pozadí textu, styl podtržení, barvu podtržení a tloušťku podtržení.
Při vykreslování textu by aplikace měla získat atributy zobrazení pro text nakreslený a použít atributy k úpravě způsobu vykreslení textu. Pokud chcete získat atributy zobrazení, proveďte následující kroky.
- Získejte objekt vlastnosti pro GUID_PROP_ATTRIBUTE voláním ITfContext::GetProperty.
- Získejte hodnotu GUID_PROP_ATTRIBUTE pro zadanou oblast voláním ITfReadOnlyProperty::GetValue. Toto poskytuje hodnotu TfGuidAtom.
- Převeďte hodnotu TfGuidAtom na identifikátor GUID voláním ITfCategoryMgr::GetGUID.
- Vytvořte objekt ITfDisplayAttributeInfo pro zobrazovací atribut voláním ITfDisplayAttributeMgr::GetDisplayAttributeInfo.
- Získejte informace o atributu zobrazení voláním ITfDisplayAttributeInfo::GetAttributeInfo.
Následující příklad kódu ukazuje funkci, která získá zobrazované atributy z zadaného kontextu, rozsahu a úprav cookie.
HRESULT GetDispAttrFromRange( ITfContext *pContext,
ITfRange *pRange,
TfEditCookie ec,
TF_DISPLAYATTRIBUTE *pDispAttr)
{
HRESULT hr;
//Create the category manager.
ITfCategoryMgr *pCategoryMgr;
hr = CoCreateInstance( CLSID_TF_CategoryMgr,
NULL,
CLSCTX_INPROC_SERVER,
IID_ITfCategoryMgr,
(LPVOID*)&pCategoryMgr);
if(FAILED(hr))
{
return hr;
}
//Create the display attribute manager.
ITfDisplayAttributeMgr *pDispMgr;
hr = CoCreateInstance( CLSID_TF_DisplayAttributeMgr,
NULL,
CLSCTX_INPROC_SERVER,
IID_ITfDisplayAttributeMgr,
(LPVOID*)&pDispMgr);
if(FAILED(hr))
{
pCategoryMgr->Release();
return hr;
}
//Get the display attribute property.
ITfProperty *pProp;
hr = pContext->GetProperty(GUID_PROP_ATTRIBUTE, &pProp);
if(SUCCEEDED(hr))
{
VARIANT var;
VariantInit(&var);
hr = pProp->GetValue(ec, pRange, &var);
if(S_OK == hr) //Returns S_FALSE if the range is not completely covered by the property.
{
if(VT_I4 == var.vt)
{
//The property is a guidatom.
GUID guid;
//Convert the guidatom into a GUID.
hr = pCategoryMgr->GetGUID((TfGuidAtom)var.lVal, &guid);
if(SUCCEEDED(hr))
{
ITfDisplayAttributeInfo *pDispInfo;
//Get the display attribute info object for this attribute.
hr = pDispMgr->GetDisplayAttributeInfo(guid, &pDispInfo, NULL);
if(SUCCEEDED(hr))
{
//Get the display attribute info.
hr = pDispInfo->GetAttributeInfo(pDispAttr);
pDispInfo->Release();
}
}
}
else
{
//An error occurred; GUID_PROP_ATTRIBUTE must always be VT_I4.
hr = E_FAIL;
}
VariantClear(&var);
}
pProp->Release();
}
pCategoryMgr->Release();
pDispMgr->Release();
return hr;
}
Související témata
-
ITfDisplayAttributeInfo::GetAttributeInfo