![]() |
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;
}