> For the complete documentation index, see [llms.txt](https://sungcheol-kim.gitbook.io/glut-tutorials/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://sungcheol-kim.gitbook.io/glut-tutorials/chapter12.md).

# 메뉴 교체하기

GLUT 를 사용하면 어플리케이션 실행 중에 메뉴를 통채로 바꿀 수 있습니다. glutSetMenu 함수와 glutGetMenu 함수를 사용하면 됩니다. 다음은 이 함수들의 설명입니다.:

```cpp
void glutSetMenu(int menu); 

인자 설명:
menu - 만들어 놓은 메뉴의 인덱스입니다.
```

이 함수를 사용해서 메뉴를 교체할 수 있습니다.

다음은 glutGetMenu 함수의 설명입니다.

```cpp
int glutGetMenu(void);
```

이 함수는 현재 메뉴의 인덱스를 반환합니다. 다음 예제는 위의 두함수를 사용해서 만든 것인데 F1 키를 누르면 메뉴가 교체됩니다.

```cpp
void processSpecialKeys(int c, int x, int y)
{
    if (!flag)
    {
        if (c == GLUT_KEY_F1)
        {
            int x = glutGetMenu();
            if (x == menu1)
                glutSetMenu(menu2);
            else
                glutSetMenu(menu1);

            // 메뉴를 마우스버튼에 연결하는 것을 잊지마세요!!!
            glutAttachMenu(GLUT_RIGHT_BUTTON);
        }
    }
}

void createGLUTMenus()
{
    menu2 = glutCreateMenu(processMenuEvents);
    glutAddMenuEntry("Blue",BLUE);
    glutAddMenuEntry("Green",GREEN);
    glutAddMenuEntry("Red",RED);

    menu1 = glutCreateMenu(processMenuEvents);
    glutAddMenuEntry("Red",RED);
    glutAddMenuEntry("Green",GREEN);
    glutAddMenuEntry("Blue",BLUE);
    glutAttachMenu(GLUT_RIGHT_BUTTON);
}
```

[Visual C 프로젝트 파일](https://github.com/skyfe79/GLUT-Tutorial/tree/master/glut10)을 받아서 자세하게 살펴보세요 :)
