VB初心者なので、単語などおかしなところが
あるかもしれません。(^-^;;
VB6.0標準コントロールで使えるテキストボックスに
ついてですが、UniCodeで処理をして、
ANSIに自動変換されてから出力されると言う
説明文がありました。
このUnicode>ANSIの自動変換処理の部分を
しないようにできないでしょうか?
よろしくお願いします。
> このUnicode>ANSIの自動変換処理の部分を
> しないようにできないでしょうか?
VBの機能(Textプロパティとか)を使わず、
API(SendMessageA関数 + WM_GETTEXT/WM_SETTEXTとか)だけで
操作するようにすれば、ANSI形式のまま操作できますよ。
魔界の仮面弁士さん、レスありがとうございます。
せっかくレスを頂いたのですが、一部訂正します。(^-^;;
> このUnicode>ANSIの自動変換処理の部分を
> しないようにできないでしょうか?
自動変換をさせず、Unicodeで表示すると訂正いたします。
>VBの機能(Textプロパティとか)を使わず、
>API(SendMessageA関数 + WM_GETTEXT/WM_SETTEXTとか)だけで
>操作するようにすれば、ANSI形式のまま操作できますよ。
ということは、この操作を行えばUnicode形式での表示も
可能になるのでしょうか?
もし可能になるのであれば、それらの関数についての
説明が載っている参考書やURLなどを教えていただけないでしょうか?
よろしくお願いします。
VB6の標準コントロールは Unicodeに対応していませんので、どうやっても「Unicodeのまま」というのは無理です。
(そもそもWin9X系では、Unicode版コントロールがサポートされていませんし)
Unicodeのまま取り扱いたいのであれば、WebBrowserのような
「Unicode対応版のActiveXコントロール」を使うか、もしくは、
NT系限定ですが「APIでUnicode版EditBoxを作成する」事になるかと。
# なお、APIでコントロールを作成した場合は、イベント処理や
# プロパティなどの操作も、すべてAPIで処理するという事を意味します。
ちなみに、VB.NETのTextBoxはUnicodeに対応していますので、
これを機に .NETに移行すると言うのも、一つの手かと。
魔界の仮面弁士さん、レスありがとうございます。
VB.NETへの移行は考えましたが、
何分今回の開発に関しては時間がない為、
多少は使い慣れているVB6.0で継続開発と
いう選択をせざるを得ませんでした。(T_T
>NT系限定ですが「APIでUnicode版EditBoxを作成する」事になるかと。
Win2K用を開発しておりますので、この手法に関して
もう少々お教えいただけますでしょうか?
よろしくお願いします。
>魔界の仮面弁士さん
WebBrowserについて調べていたところ、
ここの過去ログにこの記事を発見いたしました。
http://madia.world.coocan.jp/cgi-bin/VBBBS/wwwlng.cgi?print+200306/03060029.txt
こちらに書かれている魔界の仮面弁士さんが
UserControl化したTextBoxを、誠に勝手ながら
使用させていただきました。申し訳ありません。
申し訳ないついでに、もう一つだけ質問させてください。
このTextBoxを使ったところ、Textに変化があった時
何か処理をさせるということができませんでした。
標準テキストボックスにあるTextbox_changeのような
イベントを起こさせたいのですが、
どうしたらよいのでしょうか?
よろしくお願いします。
(魔界の仮面弁士さんの作ったUserControlの使用に
問題がありましたら、すぐに使用を中止いたします。)
表示だけならTextOutW APIで行えますけど、入力も必要な場合は、VB6だと面倒ですね。
> VB.NETへの移行は考えましたが、
あとは、Office VBAで開発するとか…。
最近のExcelやWordやAccessでは、Unicode文字の入力が可能ですし。
> Win2K用を開発しておりますので、
ちなみに、9X系でUnicodeの入力が必要なら、riched20.dllのリッチエディットv2.0を利用できます。これも、API(CreateWindow等)で生成する必要がありますけどね。
> UserControl化したTextBoxを、誠に勝手ながら
それを使うのは構いませんけど、サンプル程度に作った物なので、
エラー制御の不足やバグなどの問題もあると思いますよ。
自己責任で使ってくださいね。(^^;
> 標準テキストボックスにあるTextbox_changeのような
> イベントを起こさせたいのですが、
テキストの変更時には、onchangeイベントが発生するのですが、
このイベントは、VBのChangeイベントとは動作条件が異なります。
VBのTextBox_Changeは「入力されるたびに」発生しますが、HTMLのonchangeは、
「編集後、フォーカスが移動した時」に発生する仕様なのです。
Changeと完全に同じにはできませんが、さしあたって
onkeypress イベント(キー入力時に発生)
onpaste イベント(クリップボードからの貼り付け時に発生)
などを利用すれば、それに近い事はできるかも知れません。
魔界の仮面弁士さん、レスありがとうございます。
>Office VBAで開発
なるほど・・・そちらならいけるかも?
検討させていただきます。
>自己責任で
当然そうさせていただきます。
さすがに勝手に使って文句は言えませんし。(^-^;
コードを見ながら勉強させていただきます。
>VBのChangeイベント
なるほど。
そこら辺を細工して見ることにします。
Unicodeによる表示と言う目的は達成できましたので、
これで解決とさせていただきます。
質問に丁寧に答えてくださった魔界の仮面弁士さん、
本当にありがとうございました。
またどうしても判らないことがありましたら、
ここを利用させていただきますので、
そのときはまたよろしくお願いします。(^-^