[HOWTO] Visual Basic のフォームで UNICODE 文字列の読み込みと表示を行う方法

文書翻訳 文書翻訳
文書番号: 193540 - 対象製品
この記事は、以前は次の ID で公開されていました: JP193540
すべて展開する | すべて折りたたむ

目次

概要

この資料は、Unicode テキスト ファイルから Unicode 文字列を読み込んで、Visual Basic フォーム上で表示する方法を示したものです。

詳細

Visual Basic は、内部的には 2 バイトの Unicode 規格に基づいています。しかし Visual Basic 以外では、現在多くが 1 バイトの ANSI モデルを採用しています。こうした理由から、Visual Basic にはフォーム コントロールが 2 セット用意されており、ANSI 用のセットがデフォルト コントロールとして使用されます。フォーム コントロールの ANSI 用セットでは、渡された文字列が内部の Unicode 表現から ANSI 表現に変換されるため、UNICODE 文字列は正しく表示されません。UNICODE 文字列を Visual Basic フォームに表示できるようにするには、UNICODE (Forms 2.0) コントロールを使用する必要があります。以下の例は、Forms 2.0 コントロールを使って、Unicode テキスト ファイルから読み込まれた UNICODE 文字列を表示する方法を示したものです。この動作には UNICODE 言語パッケージ サポートが必要になるため、現在のところ、Windows NT でしかサポートされません。

: この資料で使用する Forms 2.0 のコントロールは、Visual Basic のフォームで使用するために設計されたものではなく、この環境で正式にはテストされていません。この資料は、Visual Basic の標準コントロールに対する制限を回避するため、こうした非常に限定的な状況に限って Forms 2.0 の使い方を示したものです。Visual Basic フォームでこれらのコントロールのほかの機能を使用することは、サポートされません。

さらに、Forms 2.0 は Microsoft Office の一部であり、再配布可能なコンポーネントではありません。したがって、アプリケーションと一緒に Forms 2.0 (fm20.dll) を配布することはできません。あらかじめ、使用するコンピュータにインストールしておく必要があります。まだ fm20.dll を持っていないエンド ユーザーは、次のサイトから Microsoft ActiveX Control Pad をダウンロードすることができます。この中に fm20.dll が含まれています。
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnaxctrl/html/cpad.asp

fm20.dll の配布の関連情報については、以下の「サポート技術情報」 (Microsoft Knowledge Base) を参照してください。
224305 [MOD] FM20.DLL の使用と再配布について

ステップバイステップ ガイドによるサンプルのビルド

  1. 中国語版パッケージを Windows NT コンピュータにインストールします。インストール手順については、下記の「関連情報」を参照してください。この手順の中で、MingLiu フォントが自動的にインストールされます。このほかの UNICODE 言語サポートが必要な場合は、別の言語パックをインストールすることもできます。
  2. 標準 EXE プロジェクトを作成します。デフォルトで Form1 が作成されます。
  3. [プロジェクト] メニューの [コンポーネント] をクリックし、[Microsoft Forms 2.0 Object Library] をオンにします。ツールボックスにいくつかのコントロールが新たに加わります。この中に、UNICODE 版のテキスト ボックス、ラベルなどが含まれています。
  4. Forms 2.0 の TextBox を Form1 に追加し、デフォルト名 TextBox1 のままにします。このテキスト ボックスのフォントを [MingLiu] に設定します。
  5. 2 つの [CommandButton] を Form1 に追加します。
  6. Form1 のコード ウィンドウに次のコードを追加します。
          Private Sub Command1_Click()
            ' 中国語の文字 Dan1 とアルファベットの D を含む
            ' Unicode テキスト ファイルを作成します。
            Dim a(0 To 5) As Byte
            a(0) = &HFF
            a(1) = &HFE
            a(2) = &H39
            a(3) = &H4E
            a(4) = &H44
            a(5) = &H0
            Open "unicode.txt" For Binary As #1
            Put #1, , a
            Close #1
          End Sub
    
          Private Sub Command2_Click()
            Dim txtline As String
    
            ' ファイルのパスは適宜変更する必要があります
            Open "unicode.txt" For Binary As #1
    
            txtline = InputB(2, #1)  ' 常に FF FE なのでスキップ
            txtline = InputB(4, #1)
    
            Close #1
    
            TextBox1.Text = txtline  ' 文字列を表示
          End Sub
    
    UNICODE テキスト ファイルは、必ず FF FE の 2 バイトで始まることに注意してください。したがって、これらの 2 バイトをスキップする必要があります。また、UNICODE 文字列をファイルから読み出すには、バイナリ モードでファイルを開き、InputB を使って読み取る必要がある点にも注意してください。
  7. アプリケーションを実行します。[Command1] をクリックして、Unicode テキスト ファイルを作成します。
  8. [Command2] をクリックします。中国語文字の Dan1 とアルファベットの D が、テキスト ボックスに正しく表示されます。フォント設定を MingLiu にしたメモ帳を使用すれば、unicode.txt ファイルの内容を確認することもできます。

関連情報

関連情報については、次の「サポート技術情報」 (Microsoft Knowledge Base) の資料を参照してください。
177561 HOWTO: Add and Enable Additional Languages in Windows NT
177561 [NT] Windows NT でほかの言語を追加する方法
224305 INFO: Usage and Redistribution of FM20.DLL [OffDev]

関連情報

この資料は米国 Microsoft Corporation から提供されている Knowledge Base の Article ID 193540 (最終更新日 2001-01-10) をもとに作成したものです。

プロパティ

文書番号: 193540 - 最終更新日: 2003年1月23日 - リビジョン: 1.0
この資料は以下の製品について記述したものです。
  • Microsoft Visual Basic 5.0 Professional Edition
  • Microsoft Visual Basic 6.0 Professional Edition
  • Microsoft Visual Basic 5.0 Enterprise Edition
  • Microsoft Visual Basic 6.0 Enterprise Edition
キーワード:?
kbhowto kbvbp kbunicode kbvbp500 kbvbp600 kbctrl KB193540
"Microsoft Knowledge Baseに含まれている情報は、いかなる保証もない現状ベースで提供されるものです。Microsoft Corporation及びその関連会社は、市場性および特定の目的への適合性を含めて、明示的にも黙示的にも、一切の保証をいたしません。さらに、Microsoft Corporation及びその関連会社は、本文書に含まれている情報の使用及び使用結果につき、正確性、真実性等、いかなる表明・保証も行ないません。Microsoft Corporation、その関連会社及びこれらの権限ある代理人による口頭または書面による一切の情報提供またはアドバイスは、保証を意味するものではなく、かつ上記免責条項の範囲を狭めるものではありません。Microsoft Corporation、その関連会社 及びこれらの者の供給者は、直接的、間接的、偶発的、結果的損害、逸失利益、懲罰的損害、または特別損害を含む全ての損害に対して、状況のいかんを問わず一切責任を負いません。(Microsoft Corporation、その関連会社 またはこれらの者の供給者がかかる損害の発生可能性を了知している場合を含みます。) 結果的損害または偶発的損害に対する責任の免除または制限を認めていない地域においては、上記制限が適用されない場合があります。なお、本文書においては、文書の体裁上の都合により製品名の表記において商標登録表示、その他の商標表示を省略している場合がありますので、予めご了解ください。"

フィードバック

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com