WikiトップAugust Framework 2.0>AF2_tutorial3

August Framework 2.0 : チュートリアル 3 ~ 画像を表示してみる

前回作成したプログラムでは、まっしろなウインドウが出てきてお終いでしたが、今回はもう一歩だけ進んで画像を表示してみます。

  1. #include "mglaugust2.h"
  2. class CMyFrame : public CAugustWindowFrame2
  3. {
  4. private:
  5. CAugustImage2 m_img;
  6. public:
  7. // 初期化時に呼ばれる
  8. bool OnGraphicInitEnded(){
  9. RegistControl(&m_img);
  10. m_img.Load("test.jpg");
  11. return true;
  12. }
  13. };
  14. // WinMain
  15. int APIENTRY WinMain(HINSTANCE hInstance,
  16. HINSTANCE hPrevInstance,
  17. LPSTR lpCmdLine,
  18. int nCmdShow )
  19. {
  20. CMyFrame frame;
  21. frame.Start();
  22. return 0;
  23. }

少し複雑になりました。今回では、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ファイルの画像が表示されましたか?