〜 OpenGLプラットフォーム「ヒスイ」 チュートリアル 〜
2008年4月
ここでは最も初歩的なチュートリアルとして "Hello World" アプリケーションを作成してみます。メインメニューに "Hello World" メニューを追加して、クリックすると "Hello World" と書かれたメッセージボックスを表示します。
前提とする条件は次の2つだけです。
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() );
}
このメイン関数を見て、次のことに気づいたでしょうか。
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 ファイルは、実行ファイルと同じディレクトリに配置する必要があります。
手動でコピーするのは手間ですしミスが発生しやすいので、自動的に出力ディレクトリにコピーされるように設定しておきましょう。ここでは2通りの方法を説明します。
プロジェクトの設定で "ビルド後に実行するコマンドライン" に次のようにコマンドを設定します。
copy "$(ProjectDir)"config.xml "$(TargetDir)"
F5キーでデバッグ起動します。次のようにヒスイが起動すれば成功です。
作成したプロジェクトの名前が 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");
}
}
}
}
次のようなメニューが出るはずです。クリックしてメッセージボックスが表示されれば成功です。
この辺でプラグインの仕組みを簡単に解説します。肝は、クラスや関数に付与されている Hisui.Ctrl.Command 属性です。ヒスイはプラグインを読み込むと、各クラスの属性を調べます。Hisui.Ctrl.Command 属性が付いたクラスや関数はコマンドであると認識して、その関数をメニューに割り当てるのです。
ここでは Class1 に Command 属性が付いていますから、ヒスイは Class1 のメンバにコマンドがあるかもしれないと認識します。Class1 は単なるコマンドの「入れ物」に過ぎませんので、Class1 という名前は無視されます。また、Class1 がインスタンス化されることはなく、Class1 は static class でも構いません。
次に Tutorial クラスが読み込まれます。このように入れ子になったクラスは、サブメニューを保持するメニュー項目として処理されます。したがって、メインメニューには Tutorial という名前のメニューが作られ、そのサブメニューとして HelloWorld メニューが作られます。
最後に HelloWorld() 関数が処理されます。Command属性の付いた関数はメニュー項目と結び付けられ、メニュークリック時のイベントハンドラとしてその関数が登録されます。重要な注意点として、このようなコマンド関数は static である必要があります。
...
[Hisui.Ctrl.Command("チュートリアル")]
class Tutorial
{
[Hisui.Ctrl.Command("こんにちは")]
static void HelloWorld()
{
...
メニュー名は設定ファイルでも変更できます。 上記修正の代わりに、下記のように 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