GLUT kütüphanesi ,interaktif kontrol için pop-up menü fonksiyonları sağlar. Şimdi bu fonksiyonları sırasıyla görelim.
glutCreateMenu(menu_callback_func):
Adından da anlaşılacağı üzere yeni bir menü oluşturmamızı sağlıyor. menu_callback_func callback fonksiyonumun adı. Siz farklı bir ad verebilirsiniz.
void menu_callback_func ( int ID )
{
}
Callback fonksiyonumuz yukarıdaki formatta olacak. Herhangi bir değer döndürmüyor. (Yani void) Ayrıca bir adet int türü parametre alıyor. ID değeri menüye ait elemanların id değeridir.
Örnek :
if(ID == 0)
exit(0);
Yukarıdaki gibi bir kod farenin ilişkili butonuna tıklandığında ilgili id değerine (mesela çık) basıldığında pencereyi kapatır. Siz de buna benzer komutlar yazabilirsiniz.
glutAddMenuEntry ( const char *label, int value ): Menüye yeni eleman ekliyor.
- label: Menü biriminin kullanıcıya gösterilen ismidir.
- value: Bu birim seçildiğinde ID’si , menü callback fonksiyonuna gönderilir.
Örneğin : glutAddMenuEntry("Kopyala",0);
glutAddMenuEntry("Kes",1);
glutAttachMenu ( int button ):
button: Menu ile hangi fare butonu ilişkilendirileceği belirleniyor. Aşağıdaki enum değerlerden birini parametre kısmına eklemelisiniz.
GLUT_LEFT_BUTTON, GLUT_MIDDLE_BUTTON, GLUT_RIGHT_BUTTON
glutAddSubMenu( const char *label, int value ): Menü içerisinde alt menüler oluşturur.
Böyle bir alt menü oluşturmak için şöyle bir ifade kullanabilirsiniz:
int deneme = glutCreateMenu(menu);
glutAddSubMenu("Kategori adı", deneme);
Örnek menü programı :
int shrinkMenu = glutCreateMenu(processShrinkMenu);
glutAddMenuEntry("Shrink",0);
glutAddMenuEntry("NORMAL",1);
int fillMenu = glutCreateMenu(processFillMenu);
glutAddMenuEntry("Fill",3);
glutAddMenuEntry("Line",4);
int colorMenu = glutCreateMenu(processColorMenu);
glutAddMenuEntry("Red",5);
glutAddMenuEntry("Blue",6);
glutAddMenuEntry("Green",7);
glutAddMenuEntry("Orange",8);
int mainMenu = glutCreateMenu(processMainMenu);
glutAddSubMenu("Polygon Mode", fillMenu);
glutAddSubMenu("Color", colorMenu);
// menüyü farenin sağ tuşuna ilişkilendir
glutAttachMenu(GLUT_RIGHT_BUTTON);
Programı çalıştırıp pencere üzerinde farenizin sağ tuşuna tıklarsanız aşağıdaki gibi bir ekranla karşılaşırsınız.
Ekran çıktısı :