現在地 >> メニュー >> 基本編18 >> 基本編18::まとめコード2
関連:基本編18::まとめコード1

問題


ポップアップメニューにサブメニューを用意せよ。

答え

#include <iostream>
#include <GL/glut.h>

//--------- プロトタイプ宣言 ----------//
void display();
void menu(int val);
void sub_menu_1(int val);
void sub_menu_2(int val);

//------------- OpenGLの初期設定 -------------------//
void GLUT_INIT()
{
	glutInitDisplayMode(GLUT_RGBA);
	glutCreateWindow("Pop Up Sub Menu");
}


void GLUT_CALL_FUNC()
{
	glutDisplayFunc(display);
}

void GLUT_SET_MENU()
{
	int MENU_ID[2];

	//サブメニュー1
	MENU_ID[0] = glutCreateMenu(sub_menu_1);
	glutAddMenuEntry("sub 1_1", 1);
	glutAddMenuEntry("sub 1_2", 2);

	//サブメニュー2
	MENU_ID[1] = glutCreateMenu(sub_menu_2);
	glutAddMenuEntry("sub 2_1", 1);
	glutAddMenuEntry("sub 2_2", 2);

	//ここから、メインメニューの並び
	glutCreateMenu(menu);
	glutAddSubMenu( "Sub menu part 1", MENU_ID[0] );//サブメニューとして設定
	glutAddMenuEntry("name 1", 1);
	glutAddMenuEntry("name 2", 2);
	glutAddMenuEntry("name 3", 3);
	glutAddSubMenu( "Sub menu part 2", MENU_ID[1] );//サブメニューとして設定

	glutAttachMenu(GLUT_RIGHT_BUTTON);

}


void MY_INIT()
{
	glClearColor(0.0, 0.0, 1.0, 1.0);
}

//----------- ここからメイン関数 -----------------//
int main(int argc, char **argv)
{
	glutInit(&argc,argv);
	GLUT_INIT();

	GLUT_CALL_FUNC();
	GLUT_SET_MENU();

	MY_INIT();

	glutMainLoop();

	return 0;
}

//------------- ここから各種コールバック -----------------//
void display()
{
	glClear(GL_COLOR_BUFFER_BIT);
	glFlush();
}

//ここからメニュー関係
void menu(int val)
{
	std::cout <<"name "<< val <<" click!\n";
}
//サブメニュー1関係
void sub_menu_1(int val)
{
	std::cout <<"sub menu 1_" <<val<<"\n";
}

//サブメニュー2関係
void sub_menu_2(int val)
{
	std::cout <<"sub menu 2_"<< val<<"\n";
}

目次

― その他 ―

Wiki内検索

計測中...(07.10.8〜)

Save The World






▲よろしければ広告のクリックもお願いします


▲ランキングに参加しました

管理人/副管理人のみ編集できます