[リストへもどる]
一括表示

投稿時間:2003/07/08(Tue) 15:16
投稿者名:NAOSARA
URL :
タイトル:
RichTextBoxでうまく表示できない
いつもお世話になります。

WinNT4.0-VB5.0という環境で開発しております。
テキストファイルから一行ずつ読み込みRTFのタグを付加して、
リッチテキストボックスコントロールに表示するというプログラムを作っています。
ファイルによって表示できなかったりヘッダ部分がそのまま表示されてしまう現象があったため、
調べてみたところ、以下の全角片仮名が含まれているとうまく表示できないことが
判明しました。
「ソ」「マ」「ボ」
上記の文字列が含まれなければ、他の全角片仮名や半角片仮名、平仮名・漢字等いずれも問題なく表示されます。
WinNT4.0-VB6.0環境でも試しましたが、同様の現象でした。。

表示部分のコーディングは以下のようにしています。

------------------------------------------------------------------------------
Dim strSource As String
Dim strRTHeader As String

    strSource = "\cf2 マ\par "
        ↑
        '*"色指定のタグ+文字列+改行タグ" 実際は数百行分のデータが入っています。
            
    'ヘッダーを設定
    strRTHeader = strRTHeader & "{\rtf1\ansi\ansicpg932\deff0"
    strRTHeader = strRTHeader & "{\colortbl ;"
    strRTHeader = strRTHeader & "\red255\green0\blue0;"
    strRTHeader = strRTHeader & "\red0\green0\blue255;"
    strRTHeader = strRTHeader & "\red255\green255\blue0;"
    strRTHeader = strRTHeader & "\red0\green127\blue0;}"
    strRTHeader = strRTHeader & "\viewkind4\uc1\pard\lang1041 "
    strRTHeader = strRTHeader & "\f0\fs19 "
    
    '表示
    RichTextBox1.TextRTF = strRTHeader & strSource & "}"
    
--------------------------------------------------------------------------------

同様の経験をされた方、もしくは回避方法等ご存知でしたらアドバイスお願いいたします。

投稿時間:2003/07/08(Tue) 16:11
投稿者名:魔界の仮面弁士
Eメール:
URL :
タイトル:
Re: RichTextBoxでうまく表示できない
> 「ソ」「マ」「ボ」
(中略)
>     strRTHeader = strRTHeader & "{\rtf1\ansi\ansicpg932\deff0"

コードページ932、という事は、Shift_JIS ですよね。

この場合、上記文字を 文字コードで表してみると原因がわかります。
  "ソ" = Chr(&H835C)
  "マ" = Chr(&H837D)
  "ボ" = Chr(&H837B)

そして、これらの文字の2バイト目に注目してみると、
  Chr(&H5C) = "\"
  Chr(&H7D) = "}"
  Chr(&H7B) = "{"
なのです。(^_^;)

これらは、RTF中で特殊な意味を持つ文字ですから、
そのままRTF中に埋め込む事はできない、というわけです。


> もしくは回避方法等ご存知でしたら
RTF中にそのまま埋め込める文字は、
  &H20≦X<&H80
の範囲の物に限られています。
  &H00≦X<&H20
  &H80≦X≦&HFF
の文字を使いたい場合には、文字を「エスケープ」させる必要があります。

具体的には、
  『ソ』 → 「\'83\\」 または 「\'83\'5c」
  『マ』 → 「\'83\}」 または 「\'83\'7d」
  『ボ』 → 「\'83\{」 または 「\'83\'7b」
などのように書く事になります。


詳細は、MSDNライブラリの『Rich Text Format (RTF) Specification』にある、
[Far East Support] \ [Escaped Expressions]
の項を参照してください。

投稿時間:2003/07/08(Tue) 16:57
投稿者名:NAOSARA
URL :
タイトル:
Re^2: 解決しました!
魔界の仮面弁士様

とても丁寧でわかりやすいお答え、ありがとうございます!!
文字列の編集箇所で、教えていただいた通りに処理をして
対応できました。
文字コードの部分なんて、すぐに気がつかなければいけないところですよね。
勉強不足、反省してます。。。。