![]() |
Springhead
An open source physics engine for virtual reality, haptics and motion generation.
|
このページは内容が古くなっています(ただ今改訂の準備中です)
#include <Framework/SprFWAppGLUI.h> class MYGUI : public FWAppGLUI{ private: GLUI* glui; // GUIに関する関数を必ずオーバーライドする void DesignGUI(); public: // インスタンス生成関数 static MYGUI* GetInstance(){ // instance is a static variable declared in class FWAppGLUT. if(!instance) instance = new MYGUI(); return (MYGUI*)instance; } // 必要に応じてFWAppGLUTの仮想関数をオーバーライドする. void Init(int argc, char* argv[]); //< Init関数は必ずオーバーライドする void .... public: // 自分で作ったメンバ関数を追加 private: // 自分で作ったメンバ関数やメンバ変数を追加 static void __cdecl CallHoge(int control); void RealHoge(int control); };
#include "MYGUI.h" void MYGUI::DesignGUI(){ glui = CreateGUI(); new GLUI_Hoge(glui, ....., ..., CallHoge); } static void MYGUI::CallHoge(int control){ ((*MYGUI)instance)->RealHoge(control); } void MYGUI::RealHoge(int control){ ...; } void MYGUI::Init(int argc, char* argv[]){ FWAppGLUT::Init(argc, argv); DesignGUI(); } //::::::::::::::::::::::::::::::::::::::::: // FWAppGLUTと同じ //:::::::::::::::::::::::::::::::::::::::::
#include <Springhead.h> #include "MYGUI.h" // Global空間で変数を定義しないと,デストラクタが呼ばれない. // なぜなら,glutから抜ける時にexit関数を使用するほか無いため. // (main関数が正常に最後まで走らない.) // またコンストラクタをpublicにして実体を生成すると, // 複数個のMYGUI型の変数が定義出来てしまう可能性があり危険. MYGUI* gui = MYGUI::GetInstance(); int main(int argc, char* argv[]){ gui->Init(argc, argv); gui->Start(); return 0; }