Voorbeeld van platforminformatie voor tablet-pc's
Dit programma controleert de aanwezigheid en configuratie van de kernonderdelen MicrosoftTablet PC en Touch Technology. Het bepaalt of tablet-pc-onderdelen zijn ingeschakeld in het besturingssysteem, waarbij namen en versie-informatie voor kernbesturingselementen en de standaardhandschrift en spraakherkenning worden vermeld.
De toepassing maakt gebruik van de GetSystemMetrics Windows-API, waarbij SM_TABLETPC wordt doorgegeven, om te bepalen of de toepassing wordt uitgevoerd op een tablet-pc. SM_TABLETPC is gedefinieerd in WinUser.h.
Van bijzonder belang is de manier waarop de toepassing gebruikmaakt van de verzameling Recognizers om informatie te verstrekken over de standaardherkenning. Voordat u probeert de Recognizers-verzameling en het Recognizer-object te gebruiken, controleert de toepassing of ze succesvol zijn aangemaakt.
Onderdelen
Met behulp van de herdistributiebare samenvoegmodule kunnen bepaalde onderdelen van de Tablet PC Platform-API worden geïnstalleerd op niet-tabletversies van Vista en Windows XP Professional. De aanroep GetSystemMetrics geeft alleen aan dat Windows XP Tablet PC Edition is geïnstalleerd. Een toepassing moet altijd bepalen of een bepaald onderdeel beschikbaar is. De juiste manier om te bepalen of een onderdeel van de API is geïnstalleerd, is door te proberen een exemplaar van een object of besturingselement te maken en te controleren of het bestaat voordat u het probeert te gebruiken, zoals wordt weergegeven in het volgende voorbeeld.
IInkRecognizers* pIInkRecognizers = NULL;
HRESULT hr = CoCreateInstance(CLSID_InkRecognizers,
NULL,
CLSCTX_INPROC_SERVER,
IID_IInkRecognizers,
(void **)&pIInkRecognizers);
if (SUCCEEDED(hr))
{
// use the component
} else
{
// component unavailable
}
De toepassing vindt informatie over de geïnstalleerde spraakonderdelen door te kijken naar de juiste registersleutel:
const WCHAR* gc_wszSpeechKey = L"Software\\Microsoft\\Speech\\Recognizers";
//...
if (RegOpenKeyExW(HKEY_LOCAL_MACHINE, gc_wszSpeechKey, 0, KEY_READ,
&hkeySpeech) == ERROR_SUCCESS)
De sleutel wordt gelezen met RegQueryValueExW.
Ten slotte ontdekt het voorbeeld welke besturingselementen zijn geïnstalleerd.
LPCOLESTR gc_wszProgId[NUM_CONTROLS] = {L"InkEd.InkEdit", L"msinkaut.InkOverlay"};
// ...
for (int i = 0, j = 0; i < NUM_CONTROLS; i++)
{
// Get the component info
CLSID clsid;
if (SUCCEEDED(CLSIDFromProgID(gc_wszProgId[i], &clsid)) && GetComponentInfo(clsid, info) == TRUE)
{
SetDlgItemTextW(hwnd, gc_uiCtrlId[j][0], info.wchName);
SetDlgItemTextW(hwnd, gc_uiCtrlId[j][1], info.wchVersion);
j++;
}
}