フリーゲーム・フリーソフトの開発過程を記録していく、TDtechnic公式ブログです。製品はカテゴリの「ダウンロード場」からダウンロードして頂けます。
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

こんにちは。Shiroでございます。

今回はですね、TDtechnicに革命が起きましたよ。TDtechnic史上初の挑戦です。そうです。DirectXによるIMEの描画です。

IMEというのは、皆さんご存じ、日本語入力のためのシステムのことですね。普通は、ひらがなを入力すると下線が引かれて、変換キーを押すと漢字になります。このシステムはあらゆるソフトウェアで活躍しています。

ところがぎっちょん、うちのゲームのようにDirectXで、特にフルスクリーンで描画しているソフトウェアでは、このシステムは正常に機能しないのです。DirectXが画面を支配しているため、IMEが変換のための小さなウィンドウを出すのすら許されないのです。ではどうするか。こうなったら、私が描画するしかありません。

今までは私の技術不足により、そんなことは考えもしませんでした。なるべく、日本語入力が必要ないゲームを作ることで回避していました。しかし、今回はとある事情によりどうしても日本語入力ができないと困るので、IMEの仕様を調べ、なんとかしてみようと考えました。その文献曰く、IMEに関するあらゆるWindowsメッセージをジャックし、本来のウィンドウの代わりにゲーム内に何らかの表示をすればよいのです。

しかしここで問題があります。WindowsメッセージはWindowsのイベントシステムに基づくものですが、不死女はゲームなのでそれを最大限無視して自前のタスクシステムを回しています。つまりプログラムの構造上Windowsメッセージを捉えるのが非常に難しく、不自然になるのです。

結局、IME使用時専用のウィンドウプロシージャを作り、ウィンドウ作成時にそれを指定できるようにしました。そして、IMEのウィンドウプロシージャがIMEのタスクの状態を変化させることによって、タスクシステム側からIMEの状態を拾えるようにしました。このようにWindowsイベントとタスクシステムを融合させることにより、現在正常にすべての入力モード(ひらがな、全角カナ、全角英数、半角カナ、半角英数、直接入力)で入力ができます。

まだまだ最低限の機能しかない上、試行錯誤のせいでソースコードが汚いので、改善の余地は大有りです。それでは、続きにとりかかります。
関連記事

[2014/03/18 13:44] | 不死女 -Immortal girl-
|
コメント:
この記事へのコメント:
コメント:を投稿
URL:

パスワード:
非公開コメント: 管理者にだけ表示を許可
 
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。