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


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

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

Приложение использует API GetSystemMetrics Windows, передавая 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++;
    }
}