doppan さんのコメント*1を受けて、unicode 文字を直接出力する処理を改良した。
具体的には、アプリケーションによって、その処理を切り替えるようにした。以下の一覧を見て欲しい。特定の出力処理とアプリケーション間にいわば相性の問題があるのだ。○は意図した通り文字や記号が出力される場合であり、×はそうでないことを意味する。今のところ、原則として WM_IME_CHAR を使用し、例外的に、指定したアプリケーションについては、WM_CHAR を使用するようにしている。
アプリケーション名\出力方法 | WM_UNICHAR*2 | WM_CHAR*3 | WM_IME_CHAR*4 |
---|---|---|---|
EmEditor | ○ | ○ | ○ |
Word | × | × | ○ |
Excel | × | × | ○ |
Mozilla Firefox | × | ○ | × |
Tween | × | ○ | ○ |
Opera | × | × | × |
残念なことに、この表から分かるとおり、現在の処理では Opera 上ではうまく動作しない。どうすればよいのだろうか?