tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板) [ツリー表示へ]   [Home]
一括表示(VB.NET VB2005)
タイトルSetCaretPosについて
記事No4596
投稿日: 2006/11/29(Wed) 10:16
投稿者はねねこ
前回はお世話になりました。
ソフトキーボード製作においてまた行き詰ってしまいましたのでご助力お願いします。

現在作成しているソフトキーボードにて以下のような不具合が発生します。
「漢字モードからひらがなモードに移行した後にひらがな入力するとキャレットが動かない」

独自で調べた結果CreateCaretとShowCaretは正常に動いていることを確認しました。

また、漢字モードの際にImeModeをHiraganaにしているのが原因ではないかと思い、
ひらがなモードに戻る際にImeModeを以下のように設定しなおしていました。
Off,Disable,Close,NoControl
どれに設定しなおしてもキャレットは動きませんでした。

また、一度キャレットを破棄するDestroyCaretを行って、またCreateCaretするということもしましたが、キャレットは動きませんでした。

さらに、Imeを無効にするImmDisableIMEも試してみましたが、結果は変わりませんでした。

以上のことから、原因と思われるのがSetCaretPosだと判明しました。

しかし、そこにセットする値も正常だということも確認できています。

どこが悪いのか分かっているのに、原因が分からない状態です。

SetCaretPosを検索してもあまり多くのことが書かれていないため投稿させて頂きました。

原因が分かる方がいましたら、ご助力お願いします。

[ツリー表示へ]
タイトルRe: SetCaretPosについて
記事No4597
投稿日: 2006/11/29(Wed) 11:29
投稿者花ちゃん
IME 関係のAPIの操作でなにか間違いがあるのでは?
事象を再現できる簡単なコードでも投稿して頂ければ、あるいは回答も付くかも知れませんが。

[ツリー表示へ]
タイトルRe^2: SetCaretPosについて
記事No4598
投稿日: 2006/11/29(Wed) 13:10
投稿者はねねこ
お答えありがとうございます。

早速IME関係のAPIを調べてみたのですが、私のコードではIME関係のAPIを使用していないことが判明しました。

IMEのモードを変更する際も以下のように変換しています。

txt_line1.ImeMode = Windows.Forms.ImeMode.Hiragana

よって、素人考えではIME関係のAPIは関係ないと推測します。

ほかに原因となるようなものがありましたら、またご教示お願いします。


> 事象を再現できる簡単なコードでも投稿して頂ければ、あるいは回答も付くかも知れませんが。
現在作成していますので、完成し次第ご報告します。

[ツリー表示へ]
タイトルRe^3: SetCaretPosについて
記事No4609
投稿日: 2006/11/30(Thu) 16:05
投稿者はねねこ
すみません、自己解決できました。

テキストボックスのEnabledを一旦Falseにして、またTrueにしたら正常に動くようになりました。

どうも、お騒がせしました。

[ツリー表示へ]