sInk 和 tInk 物件
為了協助應用程式中的筆跡支援,有兩個物件可以內嵌,而且由任何 OLE 容器支援。 它們是由呼叫 Ink.ClipboardCopy 方法 (Rectangle、 InkClipboardFormats、 InkClipboardModes) 或 Ink.ClipboardCopy 方法 (Strokes, InkClipboardFormats, InkClipboardModes) 方法和下列專案來產生:
- 文字筆跡物件(tInk)。 這是 OLE 物件,代表預期要形成文字的筆跡。 tInk 物件可讓手寫筆跡轉換成文字,無論是辨識器傳回的文字,還是從辨識替代清單取得的選擇。 您可以以程式設計方式設定筆跡的色彩和大小,而且可以根據對象周圍的文字屬性。 tInk 物件的目的是要包含單一單字。tInk 物件是小型輕量型物件,可執行簡單的作業,例如轉譯(指定裝置內容的句柄 (HDC) 和 RECT),以及保存本身 (指定數據流)。 使用 tInk 物件可在使用手寫和文字輸入的應用程式中,提供順暢的用戶體驗。
- 草圖筆跡物件(sInk)。 這是 OLE 物件,代表不預期會形成文字的筆跡。 sInk 物件會解譯為繪圖。 sInk 物件也可用於表示多個單字。
這些物件可用於應用程式之間的互作性,方法是將它們放在剪貼簿上的 OLE 物件位置,或內嵌在 RTF 格式中。
您可以使用下列方式使用 tInk 和 sInk 物件:
- Microsoft Word 2002 支援 tInk 和 sInk 物件。 使用者可以使用 Word 2002 中提供的書寫和繪圖文字輸入面板,將筆跡插入 Word 檔中。 此筆跡會內嵌在 Word 檔案中,做為 OLE 物件,其中包含 sInk 或 tInk 物件的 CLSID。
- 平板電腦 InkEdit 控件會使用 tInk 物件。 InkEdit 控制項是標準 RichTextBox 控件的子類別。 筆跡會以 tInk 物件的形式插入 InkEdit 控制件的 RTF 數據流中。
- 當應用程式將選取 Ink 物件移至剪貼簿時,OLE 物件剪貼簿位置會包含 tInk 或 sInk OLE 物件。
例如,您的應用程式可以辨識手寫,並將任何 Ink 物件標示為 tInk 物件。 然後,如果您選取筆跡中的單字並複製並貼到 Word,Word 2002 會顯示該字的替代專案。
注意
當您將 sInk 或 tInk 物件放在剪貼簿上做為 OLE 物件時,平板電腦平臺的剪貼簿支援會自動為您選取增強型元檔 (EMF) 旗標。 物件本身會儲存在內嵌來源和物件描述元位置的剪貼簿上。
另一個範例是,藉由使用 sInk 物件,您可以在應用程式中繪製筆跡草圖、將草圖複製並貼到 Word 2002,然後使用 Word 中的平板電腦輸入面板編輯繪圖。
若要成功包含 tInk 物件,應用程式必須實作內嵌物件的 OLE 容器支援。 然後,若要讓容器完全支援 tInk,您必須建立:
- [尋找和取代] 的程序代碼修改。 這些對象必須針對類型進行審訊,而不是略過搜尋中的內嵌物件。 如果是 tInk 物件,則必須具現化並查詢對應的文字。
- 對選取行為所做的修改。 選取 tInk 物件絕不應與重設大小控點一起出現。 應該以文件中選取文字的相同方式加以選取。 對象的選取程式代碼必須偵測類型是否為 tInk,並適當地顯示選取範圍。
- 使用環境屬性。 必須將字型大小、色彩和粗體格式等環境屬性傳送到 tInk 物件。 這些屬性的應用程式會變更手寫筆跡的寬度,因此呼叫 GetInkExtent 方法 或 IOleObject::GetExtent 方法需要大小更新。
- 覆寫預設 IOleObject::D oVerb 方法處理。 這可讓轉換成文字,將一批 tInk 對象傳遞至辨識器,然後可將文字分成辨識區段。
如需將單字分成辨識區段的詳細資訊,請參閱 辨識區段。