デスクトップでもタッチしたい
「InputMan for Windows Forms 7.0J SP1」でのタッチ対応に迫る
ダウンロード サンプルファイル (80.1 KB)
Windows 8でタッチインターフェースといえば、MicrosoftデザインスタイルのWindows 8ストアアプリの専売特許のように誤解されている方も多いと思いますが、実際はデスクトップアプリ(Windowsフォームアプリ/WPFアプリ)でもタッチを有効活用することで使いやすさが向上します。
例えばExcel 2013の場合、今まで右下の表示スケールやマウスのセンターホイールで実現していた拡大縮小をピンチやストレッチでできるようになっていたり、また表示範囲の移動も指をスライドすることで可能になっており、これが予想以上に快適であったりします。
一方、Windows 8対応と称したアプリの中には、単にWindows 8での動作確認が完了したという意味合いのものも多数存在します。単なる動作確認済ではなく、タッチを有効活用するデスクトップアプリを作成するにはどうしたらよいでしょうか。
その答えの一つが、今回ご紹介する「InputMan for Windows Forms 7.0J SP1」を利用してアプリを構築することです。「InputMan for Windows Forms 7.0J SP1」に実装されたタッチを視野に入れた新機能を使って、本当のWindows 8対応デスクトップアプリを構築してみましょう。
(編注:本稿のサンプルファイルは記事冒頭のリンクからダウンロードしてください。以降、各見出しのカッコ内の文字が対応するプロジェクト名です)
Windows 8のIMEを制御(CZ1304InputScope)
「InputMan for Windows Forms 7.0J SP1」では、GcImeコンポーネントを使うことでWindows 8でのIMEの入力モード制御が可能になっています。
GcImeコンポーネントは非表示コンポーネントなので、ツールボックスからWindowsフォームデザイナにドラッグ&ドロップするとコンポーネントトレイに自動配置されます。
GcImeコンポーネントが配置されたフォーム上のコントロールには
- AutoShowSoftKeyboard
- CausesImeEvent
- ImeSentenceMode
- InputScope
- KanaMode
- ReadingStringOutput
などのプロパティが追加されます。
もちろん対象となるのはInputManで提供されるコントロールだけではなく、Windowsフォームに配置できる標準コントロールも対象です。
InputManのコントロール
- GcCharMask
- GcComboBox
- GcDateTime
- GcDate
- GcTime
- GcTextBox
- GcMask
- GcPostal
- GcAddressBox
標準コントロール
- ComboBox
- ContextMenuStrip
- DataGridView
- ListView
- MaskedTextBox
- MenuStrip
- PropertyGrid
- RichTextBox
- TextBox
- ToolStrip
- TreeView
入力モード制御は、この拡張されるプロパティの「InputScope」プロパティを使用します。しかし、ここで1つ疑問が生じます。Windowsフォームのコントロールには標準でImeModeプロパティがあります。このプロパティの説明には「選択されたときのオブジェクトのIMEの状態を決定します」とあります。ImeModeプロパティがあるのにInputScopeプロパティが必要な理由は何でしょうか。
Windows 8のデフォルト設定(グローバルインプットモード)では、IMEの切り替えがスレッド単位ではなくユーザ単位に変わった影響から、Windows 8のデスクトップアプリではImeModeプロパティが無視されてしまうのです。この状況はタッチ対応ディスプレイかどうかは影響しません。非タッチ対応ディスプレイのノートPCでも再現します。
対処方法としてはコントロールパネルでの変更というのも考えられますが、GcImeコンポーネントを使用し、グローバルインプットモードに対応したInputScopeプロパティで対応できます。
それではImeModeプロパティで「Katakana」を指定したTextBoxコントロールと、InputScopeプロパティで「KatakanaFullWidth」を指定したTextBoxコントロールでWindows 8でのIME入力モードがどうなるか確認してみましょう。
ImeModeプロパティの指定では「ひらがな」だったIME入力モードが、InputScopeプロパティの指定では「全角カタカナ」に変わってくれます。これでやっと従来の方法を踏襲した、より細かなIME入力モードの制御ができるようになりました。
いうなれば、ImeModeプロパティを使っているWindowsフォームアプリをWindows 8で動かしたり移植したりする場合は、GcImeコンポーネントの使用に切り替えることが仕様通り動作させるための大前提だといえます。
この記事は参考になりましたか?
- 現役エンジニア直伝! 「現場」で使えるコンポーネント活用術(InputMan)連載記事一覧
-
- デスクトップでもタッチしたい 「InputMan for Windows Forms 7....
- 「InputMan」+「JPAddress」で楽々住所入力
- 「InputMan for WPF」で操作性の高いUIを開発 ~Windowsフォームとは...
- この記事の著者
-
初音玲(ハツネアキラ)
国内SIerのSEでパッケージ製品開発を主に行っており、最近は、空間認識や音声認識などを応用した製品を手掛けています。 個人的には、仕事の内容をさらに拡張したHoloLensなどのMRを中心に活動しています。 Microsoft MVP for Windows Development ブログ:http://hatsune.hatenablog.jp/
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
この記事は参考になりましたか?
この記事をシェア


