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

概要

この資料は、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 が含まれています。

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/01/22 - リビジョン: 1

フィードバック