Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A Text Services Framework (TSF) lehetővé teszi, hogy a szövegszolgáltatás megjeleníthető attribútumokat biztosítson a szöveghez. Ez lehetővé teszi, hogy az alkalmazás további vizuális visszajelzéseket jelenítsen meg. A helyesírás-ellenőrző szövegszolgáltatás például kiemelhet egy hibásan írt szót piros aláhúzással. A megjeleníthető attribútumokat a TF_DISPLAYATTRIBUTE szerkezet határozza meg, és tartalmazza a szöveg színét, a szöveg háttérszínét, az aláhúzásstílust, az aláhúzás színét és az aláhúzás súlyát.
Szöveg renderelésekor az alkalmazásnak be kell szereznie a megrajzolt szöveg megjelenítési attribútumait, és az attribútumokkal módosítania kell a szöveg rajzolásának módját. A megjelenítési attribútumok beszerzéséhez hajtsa végre az alábbi lépéseket.
- Szerezze be GUID_PROP_ATTRIBUTE tulajdonságobjektumát az ITfContext::GetPropertymeghívásával.
- A megadott tartományhoz tartozó GUID_PROP_ATTRIBUTE értékét az ITfReadOnlyProperty::GetValuemeghívásával szerezheti be. Ez egy TfGuidAtom értéket biztosít.
- Konvertálja a TfGuidAtom értéket GUID-ra ITfCategoryMgr::GetGUIDmeghívásával.
- Hozzon létre egy ITfDisplayAttributeInfo objektumot a megjelenítési attribútumhoz ITfDisplayAttributeMgr::GetDisplayAttributeInfomeghívásával.
- A megjelenítési attribútum adatainak lekéréséhez hívja meg ITfDisplayAttributeInfo::GetAttributeInfo.
Az alábbi példakód egy olyan függvényt mutat be, amely egy megadott környezetből, tartományból és a cookie szerkesztéséből szerzi be a megjelenítési attribútumokat.
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;
}
Kapcsolódó témakörök
-
ITfDisplayAttributeInfo::GetAttributeInfo