| open-mgl-dev (開発バージョン) (0.7.9.80) | 2009-11-02 22:25 |
| open-mgl (DirectX9, VC++2008) (0.7.9) | 2009-09-27 20:32 |
| roast-dev (開発バージョン) (0.0.1.40-dev) | 2009-11-02 23:09 |
>Wikiトップ>August Framework 2.0>AF2_tutorial3
前回作成したプログラムでは、まっしろなウインドウが出てきてお終いでしたが、今回はもう一歩だけ進んで画像を表示してみます。
- #include "mglaugust2.h"
- class CMyFrame : public CAugustWindowFrame2
- {
- private:
- CAugustImage2 m_img;
- public:
- // 初期化時に呼ばれる
- bool OnGraphicInitEnded(){
- RegistControl(&m_img);
- m_img.Load("test.jpg");
- return true;
- }
- };
- // WinMain
- int APIENTRY WinMain(HINSTANCE hInstance,
- HINSTANCE hPrevInstance,
- LPSTR lpCmdLine,
- int nCmdShow )
- {
- CMyFrame frame;
- frame.Start();
- return 0;
- }
少し複雑になりました。今回では、CAugustWindowFrame2 を継承した「CMyFrame」を作成しています。
その中で、CAugustImage2 と言うクラスのインスタンスを宣言、
また、OnGraphicInitEnded() と言うメソッドを定義し、その中で RegistControl()、m_img.Load() を呼び出しています。
m_img.Load() ではjpgファイル以外にも、PNG、BMP、TGAやDDXファイルなんかも読み込めます。
RegistControl() メソッドは、CAugustWindowFrame2(実際にはその大元の派生元である agh::CControlBase)にて定義されているメソッドで、
m_img を !CAugustWindowFrame2 に対して登録処理を行っています。
ちなみに、CAugustImage2 のようなクラスをコントロールクラス、または省略して単にコントロールと呼んだりします。
CAugustWindowFrame2 もまた一つのコントロールです。
コントロールクラスは、その子供として別のコントロールを持つ事が出来ます。
RegistControl() メソッドはコントロールに対し、別のコントロールを「子供」として関連付けるためのメソッドです。
OnGraphicInitEnded() は CAugustWindowFrame2 の初期化処理の中で呼ばれるコールバックです。
コントロールの登録や、各コントロールの初期化処理等は通常ここに記述します。
各コントロールクラスへのアクセスは、RegistControl() にて登録されて以降初めて利用可能になります。
このため、m_img.Load() は必ず RegistControl() の後に記述してください。
(メソッドによっては、RegistControl() の前の呼び出しでも正常に動作してしまうものもありますが、
仕様の規定範囲外であり、今後の仕様変更によって正常に動かなくなる場合もありますので、そのような記述はしないでください)
m_img.Load() にて読み込んでいる画像ファイル "test.jpg" に関しては、
特にこちらでは用意していません。各自で適当なファイルを用意してください。
なお、用意した画像ファイルは、.exeや.dllの入っているディレクトリと同じ所に配置します。
これで準備は完了です。後は実行してみましょう。
ちゃんとjpgファイルの画像が表示されましたか?