Поделиться через


Пример сведений о платформе планшетного компьютера

Эта программа проверяет наличие и конфигурацию основных компонентов microsoftTablet PC и Touch Technology. Он определяет, включены ли компоненты планшетного компьютера в операционной системе, перечисляя имена и сведения о версии для основных элементов управления, а также распознавателя рукописного ввода и речи по умолчанию.

Приложение использует WINDOWS API GetSystemMetrics, передавая SM_TABLETPC, чтобы определить, выполняется ли приложение на планшетном компьютере. SM_TABLETPC определяется в WinUser.h.

Особый интерес представляет то, как приложение использует коллекцию Распознавателей для предоставления сведений о распознавателье по умолчанию. Перед попыткой использовать коллекцию Распознавателей и объект Распознавателя приложение проверяет их успешное создание.

Компоненты

С помощью повторно распространяемого модуля слияния некоторые части API платформы планшетных компьютеров могут быть установлены в версиях Vista и Windows XP Professional, отличных от планшетов. Вызов GetSystemMetrics указывает только на то, что установлен выпуск Windows XP Tablet PC Edition. Приложение всегда должно определять, доступен ли данный компонент. Правильный способ определить, установлен ли компонент API, — попытаться создать экземпляр объекта или элемента управления и проверка, что он существует, прежде чем пытаться использовать его, как показано в следующем примере.

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
}

Приложение узнает об установленных компонентах речи, выполнив поиск в соответствующем разделе реестра:

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

Ключ считывается с помощью RegQueryValueExW.

Наконец, в примере показано, какие элементы управления установлены.

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