glutMenuStatusFuncは グローバルなメニュー・ステータス・コールバックを登録します.
Usage
void glutMenuStatusFunc(void (*func)(int status, int x, int y)); void glutMenuStateFunc(void (*func)(int status));
Description
glutMenuStatusFuncは GLUT プログラムが,あるメニューが使用されているかどうかを判断できるように グローバルなメニュー・ステータス・コールバックを登録する. メニュー・ステータス・コールバックが登録されると, ポップアップ・メニューがユーザーによって使用された時に パラメータstateにGLUT_MENU_IN_USEという値を持って コールバックがコールされ; ポップアップ・メニューが使われなくなった時には statusにGLUT_MENU_NOT_IN_USEという値をもって コールバックがオーコールされる. パラメータx,yは,ボタンが押されてメニューが現れた時や, あるいはメニューが解放された時の(おそらくはウィンドウ外での) ウィンドウ座標値を示す. パラメータfuncはコールバック関数の名前である. (ユーザー入力コールバックを除いて)ポップアップ・メニューが使われて いる時も他のコールバックは実行され続けるので, ポップアップ・メニューが使われているときも, 他のコールバックは(マウスモーション・コールバックを除いて) 動作しつづけるので, メニュー・ステータス・コールバックはメニューが使われた際に, アニメーションや他のタスクを中断することができる.
メニュー・ステータス・コールバックがコールされると, GLUT_MENU_IN_USE,GLUT_MENU_NOT_IN_USEのいずれの場合でも, カレントメニューは最初のポップアップメニューに設定される. さらに,いずれの場合でも,カレントウィンドウは 最初のメニューがポップアップされたウィンドウに設定される.
引数NULLを glutMenuStatusFunc に渡すと, メニュー・ステータス・コールバックは生成されない.
glutMenuStateFuncはglutMenuStatusFuncの修正版である. これらの違いは,glutMenuStateFuncは 2つの座標値x,yを伝えないことである.
※使用例
void menu_status (int status)
{
if (status == GLUT_MENU_IN_USE )
glutIdleFunc(NULL);
else
glutIdleFunc(animate);
}