1

Visual Basic 6.0 プログラムでは、関数 chr(11) に文字列を追加して使用し、テキスト ボックスに表示しました。

Windows 2003 Server では、テキスト ボックスの値は「ボックス (chr(11) の場合) の後に文字列が続く」と表示されます。Windows 7 では、テキスト ボックスの値は「♂ (chr(11) の場合) の後に文字列が続く」と表示されます。 "

なぜこのように振る舞うのか、誰にもアドバイスできますか?

前もって感謝します。

4

1 に答える 1

2

おそらくフォントの違いでしょう。

同じ「フェイス名」が使用されている場合でも、実際にインストールされているフォントは、どのグリフがサポートされているかなどの点で異なる場合があります。

あなたのプログラムはどんな意味でも ASCII を使っているのではなく、ANSI を使っていることに注意してください。プログラム内の Unicode から表示用の ANSI へのマッピングは、ロケールと文字セットの設定によっても異なります。ここでは、文字セットも要因になる可能性があります。

Chr(11)「11 を取り、それを現在のコードページの ANSI 文字として扱い、それを Unicode に変換してから、Variant String として返します。」

Chr$(11)文字列を返すことでそのオーバーヘッドの一部を取り除き、ChrW$(11)さらにクリーンで、ANSI から Unicode への変換によるロンダリングもスキップします。

vbVerticalTab代わりに、この文字に名前付き定数を使用する方がさらに高速です。

しかし、どれもdisplayには影響しません。それは、不必要なオーバーヘッドを回避することの問題です。

信頼できないものに依存しています。つまり、印刷できない文字には常にグリフがあるということです。表示される「ボックス」記号は、その文字に使用できるグリフがないことを意味します。

Character Map アプレットでさえ、33 未満の値 (&H21) のグリフ マッピングを表示しません。

于 2013-01-07T14:51:22.807 に答える