プロが教えるわが家の防犯対策術!

いつもお世話になっております。

VB6.0で多言語対応アプリケーションを作成しております。
しかし、ファイルから取得したウムラウト文字コードを
TextBox.Textプロパティにセットしても適切に表示できま
せん。

次は、入力用TextBoxを作成しIMEをドイツ語にセットし
同様にウムラウト文字を入力しました。そしてTextプロパ
ティの文字長をLenしたら、なんと0文字という結果になり
ました。
入力したということは目で確認できますが、文字長が0とい
うことは、そのTextBoxのプロパティに存在しないデータを
そのTextBoxは表示していることになります。

どのようなステップを踏めば正常な結果が得られるのでしょうか。

どうぞ宜しくお願いいたします。

<詳細>
-環境-
Win2000日本語版SP3
VB6.0 日本語版SP5
-参考ソース-
MSDN "Get ステートメントの使用例"
-文字コードの取得方法-
ウムラウト文字の文字コードはメモ帳で入力後、
UNICODE形式で保存。その後、バイナリエディタ
ーでオープンし文字コードを取得
-TextBoxコントロールの設定状況-
FontNameを"Tahoma"に変更(それ以外は未変更)

A 回答 (2件)

    • good
    • 0
この回答へのお礼

どうもありがとうございます。
遅くなり申し訳ございません。

お礼日時:2003/01/14 21:34

えーと、無理です。



ウムラウトがついたアルファベットや、ハートマークなどを使うには、UNICODEという文字セットが必要です。
VBは内部的にUNICODEを使用していますが、表示時はわざわざANSIコード(Shift-JIS)に直してから表示しています。

これを回避する方法はありません。
実際にTextBoxに表示する関数は、SetWindowTextというAPIなのですが、それのUNICODE版であるSetWindowTextW(WindowsNT系のみ)というのを使っても、TextBox自体がANSIコード基準のものを使っているので、かってに変換されてしまいます。

VB.NETではUNICODEが完全に使えます。
また、VC++ 6.0でも _UNICODEを定義すれば、表示部分にUNICODEが使えるかと。
もしくは、ドイツ語版Visual Basicなら表示できるのかもしれませんねぇ・・・。
    • good
    • 0
この回答へのお礼

ご丁寧な回答をどうもありがとうございます。
一点確認事があります。
TextBoxコントロールで表示をするのではなく、
RichTextBoxコントロールでも無理ということ
ですか。どうぞ宜しくお願いいたします。

お礼日時:2002/12/20 18:10

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!