다음을 통해 공유


태블릿 PC 플랫폼 정보 샘플

이 프로그램은 MicrosoftTablet PC 및 Touch Technology 핵심 구성 요소의 현재 상태와 구성을 확인합니다. 운영 체제에서 태블릿 PC 구성 요소를 사용할 수 있는지 여부를 결정하고, 핵심 컨트롤의 이름 및 버전 정보와 기본 필기 및 음성 인식기를 나열합니다.

애플리케이션은 GetSystemMetrics Windows API를 사용하여 SM_TABLETPC 전달하여 태블릿 PC에서 실행되는 애플리케이션인지 여부를 확인합니다. SM_TABLETPC WinUser.h에 정의되어 있습니다.

특히 애플리케이션에서 Recognizers 컬렉션을 사용하여 기본 인식기 정보를 제공하는 방식이 중요합니다. Recognizers 컬렉션과 Recognizer 객체를 사용하기 전에 애플리케이션이 해당 객체들이 성공적으로 생성되었는지를 테스트합니다.

구성 요소

다시 배포 가능한 병합 모듈을 사용하면 태블릿 PC 플랫폼 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++;
    }
}