Weergavekenmerken gebruiken
Met Text Services Framework (TSF) kan een tekstservice weergavekenmerken voor tekst bieden. Hierdoor kan een toepassing aanvullende visuele feedback weergeven. Een tekstservice voor spellingcontrole kan bijvoorbeeld een verkeerd gespeld woord markeren met een rode onderstreping. De weergavekenmerken die kunnen worden opgegeven, worden gedefinieerd door de TF_DISPLAYATTRIBUTE structuur en bevatten tekstkleur, achtergrondkleur van tekst, onderstrepingsstijl, onderstrepingskleur en onderstrepingsdikte.
Bij het weergeven van tekst moet een toepassing de weergavekenmerken voor de getekende tekst verkrijgen en de kenmerken gebruiken om te wijzigen hoe de tekst wordt getekend. Voer de volgende stappen uit om weergavekenmerken te verkrijgen.
- Haal een eigenschapsobject op voor GUID_PROP_ATTRIBUTE door ITfContext::GetPropertyaan te roepen.
- Haal de waarde van de GUID_PROP_ATTRIBUTE voor het opgegeven bereik op door ITfReadOnlyProperty::GetValueaan te roepen. Dit levert een TfGuidAtom- waarde.
- Converteer de TfGuidAtom--waarde naar een GUID door ITfCategoryMgr::GetGUID-aan te roepen.
- Maak een ITfDisplayAttributeInfo object voor het weergavekenmerk door ITfDisplayAttributeMgr::GetDisplayAttributeInfoaan te roepen.
- Haal de informatie van het weergavekenmerk op door ITfDisplayAttributeInfo::GetAttributeInfoaan te roepen.
In het volgende codevoorbeeld ziet u een functie die de weergavekenmerken ophaalt uit een opgegeven context, bereik en cookie bewerken.
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;
}
Verwante onderwerpen
-
ITfDisplayAttributeInfo::GetAttributeInfo