Gelişmiş Tanıma Örneği
Gelişmiş tanıma örneği, el yazısı tanıma için kullanılan Microsoft Tablet PC Otomasyonu uygulama programlama arabiriminin (API) gelişmiş özelliklerini gösterir.
Aşağıdaki özellikleri içerir:
- Yüklü tanıyıcıyı numaralandırma
- Belirli bir dille tanıyıcı bağlamı oluşturma
- Tanıyıcı nesnesini kullanma
- Tanıma olgu ve sözcük listelerini ayarlama
- Tanıma kalitesini geliştirmek için kılavuzları kullanma
- Dinamik arka plan tanıma
- Hareket tanıma
Kullanılan arabirimler şunlardır: IInkRecognizer, IInkRecoContext, IInkRecognitionResult, IInkRecognitionGuide, IInkWordList, IInkGesture, IInkCollector, IInkDisp, IInkRenderer, IInkDrawingAttributes, IInkStrokesve IInkStroke.
Mürekkep ve Proje Başlıkları
İlk olarak, Tablet PC Otomasyonu arabirimleri için üst bilgileri ekleyin. Bunlar Tablet PC Platform SDK'sı ile birlikte yüklenir. TpcError.h dosyası Tablet PC API Hata Kodu tanımlarını içerir.
#include <msinkaut.h>
#include <msinkaut_i.c>
#include <TpcError.h>
EventSinks.h dosyası IInkEventsImpl ve IInkRecognitionEventsImpl arabirimlerini tanımlar ve RecognitionWithAlternates, Strokeve Gesture olaylarını ayarlar.
#include "EventSinks.h"
ChildWnds.h dosyası, ATL'nin CWindowImpl'ından türetilen ve örneğin alt pencerelerini oluşturmak için kullanılan CInkInputWnd ve CRecoOutputWndsınıflarının tanımlarını içerir.
#include "ChildWnds.h"
AdvReco.h dosyası, bu örneğin uygulama penceresi sınıfı olan CAdvRecoApp sınıfını bildirir.
#include "AdvReco.h"
Uygulama Penceresini Başlatma
Pencerenin Run
yöntemi CAdvRecoApp nesnesini ayarlar, pencerenin menüsünü ve simgesini yükler, varsayılan tanıyıcı için bir InkRecognizerContext nesnesi oluşturur ve pencerenin ileti döngüsünü başlatır.
Pencerenin OnCreate yöntemi WM_CREATE olayını işler ve alt pencereleri oluşturur. InkCollector nesnesi, mürekkep toplayıcısının olay kaynağına bağlanır ve giriş penceresinde mürekkep girişini etkinleştirir. Ardından bir InkRecognizerGuide nesnesi oluşturur ve tanıma kılavuzu kutu dikdörtgenlerini mürekkep alanına dönüştürmek için mürekkep toplayıcının Renderleyici özelliğini kullanır. Son olarak, OnCreate yöntemi bir InkWordList nesnesi oluşturur.
Mürekkep Toplayıcı Olaylarını İşleme
Pencerenin OnStroke yöntemi, mürekkep toplayıcısının Stroke olayını işler. Yeni IInkStrokeDisp nesnesi, mürekkep toplayıcının Ink özelliğindeki InkStrokes'e eklendi.
Pencerenin OnGesture yöntemi, mürekkep toplayıcısının Hareketi olayını işler. OnGesture yöntemi, önce en yüksek güvenilirlik hareketini kullanarak hareketi tanımlar ve pencerenin bu hareketi destekleyip desteklemediğini denetler. Hareket destekleniyorsa, hareket vuruşlar koleksiyonundan kaldırıldığından, hareketin sınırlayıcı kutusu geçersiz kılınmış olur. Hareket desteklenmiyorsa Hareketi olayı iptal edilir ve bu da mürekkep toplayıcısının Vuruş olayı oluşturmasına neden olur. Son olarak, sonuçlar penceresi güncelleştirilir.
Tanıyıcı Bağlam Olaylarını İşleme
Pencerenin OnRecognitionWithAlternates yöntemi, tanıyıcı bağlamın RecognitionWithAlternates olayını işler. OnRecognitionWithAlternates yöntemi, sonuç penceresinde tanıma sonuçlarını görüntüler.
Menü Komutlarını İşleme
Pencerenin OnRecognizer yöntemi, Tanıyıcı menüsündeki komutları işler. Varsayılan komutu seçildiyse, varsayılan tanıyıcıyı almak için getDefaultRecognizer yöntemi InkRecognizers kullanılır; aksi takdirde, seçilen tanıyıcı alınır. Ardından bir tanıyıcı bağlamı oluşturulur ve kullanılır ve menü ve durum çubuğu güncelleştirilir.
Pencerenin OnFactoidWordlist yöntemi, Wordlist Kullan komutunu Factoid menüsünde işler. Tanıyıcı bağlamın Strokes özelliği, tanıyıcı bağlamını sıfırlamak için NULL olarak ayarlanır. wordlist kullan seçeneği kapalıysa, tanıyıcı bağlamın WordList özelliği NULLolarak ayarlanır; aksi takdirde, tanıyıcı bağlamın WordList özelliği, OnCreate yönteminde oluşturulan InkWordList olarak ayarlanır. Son olarak, mürekkep toplayıcısının InkStrokes, tanıyıcı bağlamına yeniden eklenir, tanıyıcı bağlamının BackgroundRecognizeWithAlternates yöntemi çağrılır ve ardından menü güncellenir.
Pencerenin OnFactoid yöntemi, Factoid menüsündeki factoid komutlarını işler. İlk olarak tanıyıcı bağlamının Strokes özelliğini NULLolarak ayarlar, tanıyıcı bağlamının Factoid özelliğini seçili factoid'e ayarlar ve mürekkep toplayıcısının InkStrokes'u tanıyıcı bağlama yeniden atar. Factoid nesnesi tanıyıcı bağlamı tarafından destekleniyorsa, tanıyıcı bağlamın BackgroundRecognizeWithAlternates yöntemi çağrılır; aksi takdirde bir hata iletisi görüntülenir. Son olarak, menü ve durum çubuğu güncelleştirilir.
Pencerenin OnGuide yöntemi, Kılavuzu menüsündeki komutları işler. Tanıyıcı bağlamı kılavuz seçeneklerini destekliyorsa, OnGuide yöntemi, tanıyıcı bağlamın Strokes özelliğini NULLolarak ayarlar, tanıyıcı bağlamın Kılavuz özelliğini seçili kılavuz ayarına ayarlar, mürekkep toplayıcısının InkStrokes 'larını tanıyıcı bağlamına yeniden atar ve tanıyıcı bağlamın BackgroundRecognizeWithAlternates yöntemini çağırır. Aksi takdirde, bir hata iletisi görüntülenir. Son olarak, giriş penceresi, menü ve durum çubuğu güncelleştirilir.
Pencerenin OnMode yöntemi, Modu menüsündeki komutları işler. Mürekkep toplayıcısını devre dışı bırakır, mürekkep toplayıcısının CollectionMode özelliğini güncelleştirir, menüyü güncelleştirir ve hareket listelerini gösterir veya gizler. Son olarak, mürekkep toplayıcı etkinleştirilir.
Pencerenin OnRecognize yöntemi, Mürekkep menüsündeki Tanıma komutunu işler. Tanıyıcı bağlamının mürekkep eklenmesini önlemek için tanıyıcı bağlamının EndInkInput yöntemi çağrılarak mürekkep eklenmesi engellenir. Tüm tanıyıcılar kısmi tanımayı desteklemediğinden bu bazen gereklidir. Ardından tanıyıcı bağlamın Recognize yöntemini çağırır ve sonuçları pencerenin OnRecognitionWithAlternates yöntemine iletir. Son olarak, mürekkep toplayıcısının InkStrokes tanıyıcı bağlamı için yeniden atanır.
Pencerenin OnClear yöntemi, Mürekkep menüsündeki Temizle komutunu işler. Mürekkep toplayıcısının Mürekkep özelliğinden vuruşları siler, eski vuruşlar koleksiyonunu serbest bırakır ve mürekkep toplayıcısının Mürekkep özelliği için yeni bir koleksiyon oluşturur, ardından yeni vuruşlar koleksiyonunu tanıyıcı bağlamına ekler.
Pencerenin OnExit yöntemi, Mürekkep menüsündeki Çık komutunu işler ve WM_CLOSE olayını başlatır.
Yardımcı Yöntemler
Pencerenin LoadMenu yöntemi, pencerenin Run yönteminden çağrılır ve desteklenen tanıyıcıların listesini ve desteklenen olguların listesini menüye ekler. İlk olarak, InkRecognizersalır. Daha sonra mevcut tanıyıcıları gözden geçirir ve yalnızca Languages özelliğinde dil listesi bulunan tanıyıcıları seçip Tanıyıcı menüsüne ekler. Son olarak, küresel sabit olarak tanımlanan özet bilgilerin listesiyle Factoid menüsünü doldurur.
Pencerenin UseRecognizer yöntemi, kullanıcı yeni bir tanıyıcı seçtiğinde pencerenin OnRecognizer yönteminden çağrılır. Bir tanıyıcı bağlamı oluşturur, eski bağlamı tanıyıcı olay havuzundan ayırır, eski bağlamı temizleyip serbest bırakır ve yeni bağlamı tanıyıcı olay havuzuna ekler.
Ardından UseRecognizer yöntemi, tanıyıcının Capabilities özelliğini denetler ve bu özellik, bir InkRecognizerCapabilities değeri döndürür. Tanıyıcı çizgili girişi destekliyorsa, Kılavuzu menüsündeki Çizgiler komutu etkinleştirilir. Tanıyıcı kutulanmış girişi destekliyorsa, Kutuları komutu etkinleştirilir. Tanıyıcı serbest girişi desteklemiyorsa, Hiçbiri komutu devre dışı bırakılır. Geçerli kılavuz seçimi desteklenmiyorsa, hem Kılavuzu hem de tanıyıcı bağlamının özelliği ve menü güncelleştirilir.
Ardından, UseRecognizer yöntemi, tanıyıcı bağlamının WordList ve Factoid özelliklerini ayarlamayı dener. Her iki ayardan biri tanıyıcı tarafından desteklenmiyorsa, varsayılan değer kullanılır ve menü güncelleştirilir.
Son olarak, UseRecognizer yöntemi, mürekkep toplayıcısının InkDisp nesnesinin Strokes özelliğini tanıyıcı bağlamlarına ekler, çıkış penceresinin yazı tipini tanıyıcının dili tarafından desteklenen bir yazı tipiyle değiştirir, çıkış penceresini sıfırlar ve tanıma bağlamının BackgroundRecognizeWithAlternates yöntemini çağırarak tanıma sonuçlarını güncelleştirir.
Pencerenin GetGestureName yöntemi, pencerenin OnGesture yönteminden çağrılır. Hareketi arar ve hareketin adına bir dizin döndürür. Bu dizin AdvReco.rc dosyasındaki bir dize tablosunda depolanır.