Not
Åtkomst till denna sida kräver auktorisation. Du kan prova att logga in eller byta katalog.
Åtkomst till denna sida kräver auktorisation. Du kan prova att byta katalog.
Med Text Services Framework (TSF) kan en texttjänst tillhandahålla visningsattribut för text. På så sätt kan ett program visa ytterligare visuell feedback. En texttjänst för stavningskontroll kan till exempel markera ett felstavat ord med en röd understrykning. De visningsattribut som kan anges definieras av den TF_DISPLAYATTRIBUTE strukturen och innehåller textfärg, textbakgrundsfärg, understrykningsformat, understrykningsfärg och understrykningsvikt.
När du återger text bör ett program hämta visningsattributen för texten som ritas och använda attributen för att ändra hur texten ritas. Utför följande steg för att hämta visningsattribut.
- Hämta ett egenskapsobjekt för GUID_PROP_ATTRIBUTE genom att anropa ITfContext::GetProperty.
- Hämta värdet för GUID_PROP_ATTRIBUTE för det angivna intervallet genom att anropa ITfReadOnlyProperty::GetValue. Detta tillhandahåller ett TfGuidAtom- värde.
- Konvertera värdet TfGuidAtom till ett GUID genom att anropa ITfCategoryMgr::GetGUID.
- Skapa ett ITfDisplayAttributeInfo-objekt för visningsattributet genom att anropa ITfDisplayAttributeMgr::GetDisplayAttributeInfo.
- Hämta information om visningsattributet genom att anropa ITfDisplayAttributeInfo::GetAttributeInfo.
I följande kodexempel visas en funktion som hämtar visningsattributen från en angiven kontext, ett intervall och en redigeringscookie.
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;
}
Relaterade ämnen
-
ITfDisplayAttributeInfo::GetAttributeInfo