中本です。

On Sat, 30 Sep 2006 07:43:07 +0900
Yoshiyuki Masutomi <[EMAIL PROTECTED]> wrote:

> [EMAIL PROTECTED] です。
> 
> Takashi Nakamoto wrote:
> >> Windows版の未解決の問題:
> >>  - Win 95系の対応
> >>  - IMEとしてATOK14を使っていると、結果が半角カナで返ってくる
> >>    (さっき発見しました)
> >>  - 100文字以上の文字列のフリガナが表示されない
> > 
> > これに追加で、
> >  - ATOKとMS-IMEでは結果が異なる
> >  - FURIGANA関数を使っているCalcファイルを開くと、開いた直後には正し
> > い結果が表示されず、何も表示されなかったり、意味不明な文字列が表示さ
> > れる。 (関数を入力し直したりすれば直る)
> > 
> > 前者については、とても頭の痛くなる問題です。どうしたものか...
> 1.前にも示した、
> http://www.psytec.co.jp/tips/0104/
> が参考になると思いますが、OS(IMEバージョン?)によって返してくる結果が異
> なるのでそれに対応しないとならないと思います。

このページを見る限りでは、OSのバージョンを見て、Win95系の場合は
Shift_JISに変換して、 WinNT系の場合はUnicode(LE)に変換して、
ImmGetConversionListWに渡すのがよいということでしょうか。

> 3.99文字で区切って末尾
> の文字コードを確認、2バイト文字の上位のコードの場合は1文字削除して変
> 換。削除した一文字は以降の文字列の先頭に追加、以上を繰り返す。と言う所
> でしょうか。

これも考えてみたのですが、例えば99文字目が「中」で100文字目が「本」だっ
た場合には、該当する部分の結果として期待するのは「なかもと」ですが、
「ちゅう」と「ほん」に分かれて逆変換されそうです。

そういえば、これは Shift_JIS コードで200バイトの制限がかかっているのか、
それとも Unicode で200文字の制限がかかっているのか分かりませんね。
# っていうか、文字(バイト)数の制限があるなんてどこにも書いてへんし

> > また、後者については原因は分からないのですが、
> >     m_hWnd = GetActiveWindow();
> >     hIMC = ImmGetContext(m_hWnd);
> >     hKL = GetKeyboardLayout(0);
> > あたりが怪しい気がしています。ウィンドウが開く前にこのコードが実行さ
> > れているとか...curvirgoさんのほうでも再現しますでしょうか?
> 再現しました。
> "m_hWnd = GetActiveWindow();"
> あたりかなぁと思うんですが...

それならば、仮想的にウィンドウを作るというのはダメなのでしょうか?

-- 
 中本 崇志 ( Takashi Nakamoto )
 E-Mail  : [EMAIL PROTECTED], [EMAIL PROTECTED]
 Homepage: http://bd.tank.jp/
 blog    : http://bd.tank.jp/diary

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

メールによる返信