特殊な文字を表示するには


あおいぬ  2002-08-28 21:04:23  No: 76025

VBで作成したアプリ上で表示される文字なのですが、
立方メートルやリットルなどの特殊な文字が表示されません。

‰,?(立方メートル,リットル)

試しにこの書き込みでも打って見たのですが同じように表示されないようです。
調べてみたところ、UniCodeにしか登録されていない文字が表示されないようです。ATOKがインストールされているのですが、これも関係しているのでしょうか。
ご教授お願いします。


Say  2002-08-28 23:27:02  No: 76026

JP193540 - [HOWTO] Visual Basic のフォームで UNICODE 文字列の読み込みと表示を行う方法
http://support.microsoft.com/default.aspx?scid=http://www.microsoft.com/japan/support/kb/articles/JP193/5/40.asp


YuO  2002-08-29 05:35:19  No: 76027

直接描画すればなんとかなるかもしれません。

TextOutWやMessageBoxWといったAPIはWindows 95系統でも動作することになっています。
APIを大量に使っての描画になりますが,できないことはないです。
#フォントも要ります。

Unicode APIに文字列を渡すときは,StringではなくByte配列を使います。
Stringでは従来コードに変換されてしまうためです。

ちなみに,エディットコントロールなどは一切使えません。注意が必要です。


あおいぬ  2002-08-30 00:16:13  No: 76028

となると、テキストボックスにユーザーが普通に入力する場合、
Unicodeの2バイトの文字を表示することは不可能と言うことになるのでしょうか。


あおいぬ  2002-08-30 00:27:04  No: 76029

すみません。不可能というのは、配布可能な普通のコントロールで
という意味です。


YuO  2002-08-30 01:25:12  No: 76030

> となると、テキストボックスにユーザーが普通に入力する場合、
> Unicodeの2バイトの文字を表示することは不可能と言うことになるのでしょうか。

そういうことです。
標準のテキストボックスは,OSが持っているEDITコントロールをラップして使っています。
そして
・Windows 95/98/Me
EDITコントロールにはUNICODE文字を表示・編集する機能はありません。
・Windows NT4/2000/XP
CreateWindowExAで作成されたEDITコントロールにはUNICODE文字を表示・編集する機能はありません。
CreateWindowExWで作成されたEDITコントロールではUNICODE文字を表示・編集できます。

でもって,VBでは,95系とNT系で共通に使えるように,
CreateWindowExAを使ってEDITコントロールを作成しています。
なので,UNICODE文字を表示・編集することはできません。
また,NT系のEDITコントロールでは(A/W問わず)64K以上の文字の入力ができますが,
ラッパが64Kを超える部分をカットしています。


あおいぬ  2002-08-30 01:55:04  No: 76031

これを実現する方法を考えたのですが、
こちら側で使うと思われる(私が現在開発中のアプリにおいて)特殊な文字、
平方メートルやリットルなどの単位文字をフォントで作成して、
インストール時にJISやシフトJISに外字登録するということは可能でしょうか。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加