Partilhar via


Exemplo de informações da plataforma de tablet pc

Este programa verifica a presença e a configuração dos componentes principais microsoftTablet PC e Touch Technology. Ele determina se os componentes do Tablet PC estão habilitados no sistema operacional, listando nomes e informações de versão para controles principais e o reconhecimento de manuscrito e fala padrão.

O aplicativo usa a API do Windows GetSystemMetrics, passando SM_TABLETPC, para determinar se o aplicativo está em execução em um Tablet PC. SM_TABLETPC é definido em WinUser.h.

De interesse específico é a maneira como o aplicativo usa a coleção Recognizeers para fornecer informações sobre o reconhecedor padrão. Antes de tentar usar a coleção Recognizeers e o objeto Recognizer, o aplicativo testa sua criação bem-sucedida.

Componentes

Usando o módulo de mesclagem retribuível, determinadas partes da API da Plataforma tablet pc podem ser instaladas em versões não Tablet do Vista e do Windows XP Professional. A chamada GetSystemMetrics indica apenas que o Windows XP Tablet PC Edition está instalado. Um aplicativo sempre deve determinar se um determinado componente está disponível. A maneira adequada de determinar se um componente da API está instalado é tentar criar uma instância de um objeto ou controle e marcar que ela existe antes de tentar usá-la, conforme mostrado no exemplo a seguir.

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
}

O aplicativo descobre sobre os componentes de fala instalados examinando a chave do Registro apropriada:

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

A chave é lida usando RegQueryValueExW.

Por fim, o exemplo descobre quais controles estão instalados.

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