いつも参考にさせてもらっています。
テキストボックスに全角の文字列を入力し確定するときに、
テキストボックスに確定された文字列を入れる前に、入力された文字列の長さなどを取得したいのですが、変数に入れたいのですが可能でしょうか?
宜しくお願いします。
下記URLの記事を参考にしてみてはどうでしょう。
http://www.technoproducts.co.jp/win/vb000002.htm
http://www.microsoft.com/japan/msdn/library/ja/jpintl/html/Toppage_IME.asp?frame=true
最終目的が、
>テキストボックスに確定された文字列を入れる前に、入力された文字列の長さなどを取得したい。
ならばいいけれど、
#これは過程であって、
#でも、実際にやりたいことは、
#単に、指定文字数以上の入力をさせたくないだけだったりしてね・・・。
1:テキストボックスの文字列を文字列変数に入れておく
2:テキストボックスに入力確定したら文字列変数の方の文字列の長さとテキストボックスの長さを比較する(差が入力した文字の長さ)
3:確定したテキストボックスの内容ではマズいのであれば、テキストボックスに文字列変数に入れておいた文字列を入れれば元に戻る
4:ふりだしへ戻る
とか。
まだ解決がチエックされていないので
calyu さんの質問の文章通りに実行しようとしたらどうなるか考えてみました。
まず以下を参考にしてください。
http://www.bcap.co.jp/hanafusa/dotnet/ime01.htm
ここで使用されている定数 Private Const GCS_RESULTREADSTR を
Public Const GCS_RESULTSTR = &H800 にして、変換後の文字列を取得します。
そして上では テキストボックスからのイベントをきっかけに処理していますが、
以下を参考に
http://madia.world.coocan.jp/cgi-bin/VBBBS2/wwwlng.cgi?print+200407/04070102.txt
(上のトピックから検索にWndProcといれて検索)
テキストボックスからクラスを作り(書いている私も意味がよくわからないが)
Private Class MyTextBox
Inherits TextBox
Protected Overrides Sub WndProc(ByRef m As Message)
'IMEから送られてくるメッセージをテキストボックスへの描画前に
'処理
'上を参考に長さを取得し変数に入れる。
MyBase.WndProc(m)
End Sub
End Class
などとして大変なことになると思います。がんばってください。
皆様、お返事ありがとうございました。
貼り付けていただいたURLなど参考にしてみましたが、
あまり経験がなかったのでフローチャートもうまく書けなかったです;;
今回は通ってみたさんのを参考をそのまま考えてみたらできました。
夏の朝も天玉うどんさんのやり方もとても興味があるので、
時間があればまた挑戦してみたいと思います。
皆様、ありがとうございました^^