Partager via


Exemple d’informations sur la plateforme Tablet PC

Ce programme vérifie la présence et la configuration des composants principaux du PC MicrosoftTablet et de la technologie tactile. Il détermine si les composants Tablet PC sont activés dans le système d'exploitation, répertorie les noms et les informations de version des contrôles principaux, ainsi que le module de reconnaissance par défaut pour l'écriture manuscrite et vocale.

L’application utilise l’API Windows GetSystemMetrics, en passant SM_TABLETPC, pour déterminer si l’application s’exécute sur un PC tablette. SM_TABLETPC est défini dans WinUser.h.

L’application utilise la collection Recognizers pour fournir des informations sur le module de reconnaissance par défaut. Avant de tenter d'utiliser la collection Recognizers et l'objet Recognizer, l'application vérifie leur création réussie.

Composants

À l’aide du module de fusion redistribuable, certaines parties de l’API Tablet PC Platform peuvent être installées sur des versions non tablettes de Vista et Windows XP Professional. L’appel GetSystemMetrics indique uniquement que Windows XP Tablet PC Edition est installé. Une application doit toujours déterminer si un composant donné est disponible. La façon appropriée de déterminer si un composant de l’API est installé consiste à tenter de créer une instance d’un objet ou d’un contrôle et de vérifier qu’il existe avant de tenter de l’utiliser, comme illustré dans l’exemple suivant.

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
}

L’application découvre les composants vocaux installés en examinant la clé de Registre appropriée :

const WCHAR* gc_wszSpeechKey = L"Software\\Microsoft\\Speech\\Recognizers";
//...
if (RegOpenKeyExW(HKEY_LOCAL_MACHINE, gc_wszSpeechKey, 0, KEY_READ, 
                  &hkeySpeech) == ERROR_SUCCESS) 

La clé est lue à l’aide de RegQueryValueExW.

Enfin, l’exemple détermine quels contrôles sont installés.

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++;
    }
}