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, en répertoriant les noms et les informations de version pour les contrôles de base et l’écriture manuscrite et le module de reconnaissance vocale par défaut.

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

Il est particulièrement intéressant de savoir comment l’application utilise la collection Recognizers pour fournir des informations sur le module de reconnaissance par défaut. Avant d’essayer d’utiliser la collection Recognizers et l’objet Recognizer, l’application teste la réussite de leur création.

Components

À l’aide du module de fusion redistribuable, certaines parties de l’API plateforme Tablet PC peuvent être installées sur des versions non-Tablette de Vista et Windows XP Professionnel . L’appel GetSystemMetrics indique uniquement que Windows XP Édition Tablet PC est installé. Une application doit toujours déterminer si un composant donné est disponible. Le bon moyen de déterminer si un composant de l’API est installé consiste à tenter de créer un instance d’un objet ou d’un contrôle et de case activée 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++;
    }
}