戻る

Hello World を作ってみよう

〜 OpenGLプラットフォーム「ヒスイ」 チュートリアル 〜

2008年4月

ここでは最も初歩的なチュートリアルとして "Hello World" アプリケーションを作成してみます。メインメニューに "Hello World" メニューを追加して、クリックすると "Hello World" と書かれたメッセージボックスを表示します。

前提とする条件は次の2つだけです。

1.まずは環境設定から

ヒスイのモジュールを確認しよう

bin/ フォルダに下記のようなヒスイのモジュールが含まれています。

hisui.exe メインプログラム
Hisui.Core.dll
Hisui.Ctrl.dll
Hisui.Geom.dll
Hisui.Graphics.dll
Hisui.Gui.dll
Hisui.Hix.dll
Hisui.OpenGL.dll
Hisui.SI.dll
Hisui.Testing.dll
Hisui本体のアセンブリモジュール
Hisui.Std.dll
Hisui.Spatial.dll
Hisui.Spatial.Formats.dll
Hisui.Spatial.Commands.dll
Hisuiの標準プラグイン

bin/ フォルダには上記に挙がっていないモジュールも含まれていますが、チュートリアルでは使用しないので説明は割愛します。

プロジェクトの作成

Visual Studio を起動し、"Windows アプリケーション" プロジェクトを新規作成します。プロジェクト名はなんでも結構ですが、ここでは仮に HelloWorld という名前だとします。次に、作成したプロジェクトの参照設定を行います。以下のヒスイのモジュールを参照設定に追加してください。
(このチュートリアルでは Hisui.Spatial.* は使用しないので、参照設定に追加しなくても結構です。ただしその場合は、後述する config.xml からも Hisui.Spatial.* を除去してください。)

メイン関数の作成

メイン関数を作成します。Program.cs を開いて、次のように編集します。

    ...
    [STAThread]
    static void Main()
    {
      Application.EnableVisualStyles();
      Application.SetCompatibleTextRenderingDefault( false );
      Hisui.SI.SetUp( "config.xml" );
      Application.Run( new Hisui.Gui.MainForm() );
    }

このメイン関数を見て、次のことに気づいたでしょうか。

config ファイルの作成

XML ファイルをプロジェクトのフォルダに新規作成し、次のように記述します。

<?xml version="1.0" encoding="utf-8" ?>
<config>
  <plugin>
    <include name="Hisui.Std.dll"/>
    <include name="Hisui.Spatial.dll"/>
    <include name="Hisui.Spatial.Commands.dll"/>
    <include name="Hisui.Spatial.Formats.dll"/>
  </plugin>
</config>

(参照設定の追加で Hisui.Spatial.* を省略した場合は、この config.xml からも Hisui.Spatial.* を除去してください。)

config.xml ファイルをコピー

先ほど作成した config ファイルは、実行ファイルと同じディレクトリに配置する必要があります。

手動でコピーするのは手間ですしミスが発生しやすいので、自動的に出力ディレクトリにコピーされるように設定しておきましょう。ここでは2通りの方法を説明します。

(A) 「出力ディレクトリにコピー」プロパティを利用する方法

  1. まずプロジェクトに config.xml を追加しておきます。VisualStudioのソリューションエクスプローラにconfig.xmlが表示されます。
  2. config.xml を選択すると右下にプロパティが表示されます。
  3. プロパティの「出力ディレクトリにコピー」を「新しい場合はコピーする」に設定します。

(B) ビルドイベントを利用する方法

プロジェクトの設定で "ビルド後に実行するコマンドライン" に次のようにコマンドを設定します。

copy "$(ProjectDir)"config.xml "$(TargetDir)"

起動

F5キーでデバッグ起動します。次のようにヒスイが起動すれば成功です。

[図01:起動画面]

2.Hello World を作ろう

設定ファイルの編集

作成したプロジェクトの名前が HelloWorld だとすると、これから HelloWorld.exe に機能を足していくことになります。この足された機能はプラグインとしてヒスイにロードされる必要があります。ですから、設定ファイル config.xml に次のように書き加えておきましょう。

<?xml version="1.0" encoding="Shift_JIS"?>
<config>
  <plugin>
    ...
    <include name="HelloWorld.exe"/>
  </plugin>
  ...
</config>

手順

[プロジェクト | クラスの追加] メニューでクラスを新規作成し、次のようにソースを書き足します。
namespace HelloWorld
{
    [Hisui.Ctrl.Command]
    public class Class1 // ← このクラス名は何でも良い
    {
        [Hisui.Ctrl.Command]
        class Tutorial
        {
            [Hisui.Ctrl.Command]
            static void HelloWorld()
            {
                System.Windows.Forms.MessageBox.Show("Hello, World");
            }
        }
    }
}

ビルドしてみる

次のようなメニューが出るはずです。クリックしてメッセージボックスが表示されれば成功です。

[図03-01: Hello World]

解説

この辺でプラグインの仕組みを簡単に解説します。肝は、クラスや関数に付与されている Hisui.Ctrl.Command 属性です。ヒスイはプラグインを読み込むと、各クラスの属性を調べます。Hisui.Ctrl.Command 属性が付いたクラスや関数はコマンドであると認識して、その関数をメニューに割り当てるのです。

ここでは Class1 に Command 属性が付いていますから、ヒスイは Class1 のメンバにコマンドがあるかもしれないと認識します。Class1 は単なるコマンドの「入れ物」に過ぎませんので、Class1 という名前は無視されます。また、Class1 がインスタンス化されることはなく、Class1 は static class でも構いません。

次に Tutorial クラスが読み込まれます。このように入れ子になったクラスは、サブメニューを保持するメニュー項目として処理されます。したがって、メインメニューには Tutorial という名前のメニューが作られ、そのサブメニューとして HelloWorld メニューが作られます。

最後に HelloWorld() 関数が処理されます。Command属性の付いた関数はメニュー項目と結び付けられ、メニュークリック時のイベントハンドラとしてその関数が登録されます。重要な注意点として、このようなコマンド関数は static である必要があります。

要するに・・・

これだけでコマンドが作れます。

3.メニュー名を日本語にしたい

Command 属性の引数に、下記のように日本語を設定すれば、それがメニュー名となります。
  ...
  [Hisui.Ctrl.Command("チュートリアル")]
  class Tutorial
  {
      [Hisui.Ctrl.Command("こんにちは")]
      static void HelloWorld()
      {
        ...

[図04-01: メニューの日本語化]

メニュー名は設定ファイルでも変更できます。 上記修正の代わりに、下記のように config.xml を書き加えてください。

<?xml version="1.0" encoding="Shift_JIS"?>
<config>
  <plugin>
    ...
  </plugin>
  <command>
    ...
    <caption name="Tutorial">チュートリアル</caption>
    <caption name="Tutorial.HelloWorld">こんにちは</caption>
  </command>
</config>

戻る

Copyright © 2007, 株式会社カタッチ
http://www.quatouch.com