Windows ゲーム環境と日本語入力 (1)

それなりの数存在すると思われる Windows アプリケーションプログラマの中でも,IME を明示的に操作する必要に見舞われたという人はそれ程多くないはずです.
Windows アプリケーションでは,なんだかんだでプログラマもエンドユーザも IME についてはそれ程気にする必要がありません.もっとも,これはいざ気にする必要ができたときにとんでもないブラックボックスを相手にしなければならないということも意味するわけですが.



ゲームプログラミング,特にフルスクリーンゲームでは,こういった IME の明示的な制御が必要になる珍しい分野の 1 つです.通常 IME は候補ウィンドウなど独自の UI ウィンドウを表示しますが,これは直接プライマリサーフェイスを書き換える DirectDraw/Direct3D の排他モードで困ったことになります.そこで,アプリケーションは IME と通信して,表示すべき内容を取得し,IME の代わりに自分で変換候補などを描画する必要があります.
また,DirectDraw/Direct3D ゲーム開発では,通常コモンコントロールは一切使用しません.これはつまり,普段当たり前のように使っているエディットボックスなどのウィジットも,1 から全て自作しなければならないことを意味します.文字列を格納・表示し,Ctrl+V や Shift+Insert といったショートカットキーに対応し,再変換ボタンで再変換を行うといった処理は,ひとつひとつ再実装する必要があります.
幸い最近の DirectX SDK にはこの辺りの処理を一通り実装したサンプルフレームワークが存在します.DXUT と呼ばれるサンプルフレームと,それを利用した CustomUI というサンプルプログラムは,IME の変換候補を Direct3D 経由で画面に描画するものです.また,DirectX SDKIME に関する優れたホワイトペーパーも含んでいるので,DXUT のソースコードと共に参考にすると良いでしょう.