逐行解释以下代码 double fH = GetFontHeight(); double x = 0; //fH/8; double y = winheight; double h = fH*1.5; // 控件高度 double w = TextStringWidth(menuListFile[0])*2; // 控件宽度 double wlist = TextStringWidth(menuListFile[3])*1.2; double xindent = winheight/20; // 缩进 int selection; static char * selectedLabel = NULL; // menu bar drawMenuBar(0,y-h,winwidth,h); // File 菜单 selection = menuList(GenUIID(0), x, y-h, w, wlist, h, menuListFile, sizeof(menuListFile)/sizeof(menuListFile[0])); if( selection>0 ) selectedLabel = menuListFile[selection]; if(selection!=0) printf("%d\n",selection); switch(selection) { case 1: LoadFile(); break; case 2: SaveFile(); break; case 3: exit(-1); break; } // Help 菜单 selection = menuList(GenUIID(0),x+w,y-h, w, wlist, h, menuListHelp,sizeof(menuListHelp)/sizeof(menuListHelp[0])); if( selection>0 ) selectedLabel = menuListHelp[selection]; if( selection==1 ) { show_more_buttons = ! show_more_buttons; isShowDiscription=1; }
时间: 2024-03-04 07:54:23 浏览: 84
这段代码主要是创建一个菜单栏,并响应用户的菜单选择。具体解释如下:
1. `double fH = GetFontHeight();` 获取字体高度并赋值给变量 fH。
2. `double x = 0; //fH/8;` 给变量 x 赋值为 0。
3. `double y = winheight;` 给变量 y 赋值为窗口高度。
4. `double h = fH*1.5; // 控件高度` 给变量 h 赋值为字体高度的 1.5 倍,表示菜单栏的高度。
5. `double w = TextStringWidth(menuListFile[0])*2; // 控件宽度` 给变量 w 赋值为菜单栏中第一个菜单项所需的宽度的两倍,表示菜单栏的宽度。
6. `double wlist = TextStringWidth(menuListFile[3])*1.2;` 给变量 wlist 赋值为菜单项列表中第四个菜单项所需的宽度的 1.2 倍,表示菜单项列表的宽度。
7. `double xindent = winheight/20; // 缩进` 给变量 xindent 赋值为窗口高度的 1/20,表示菜单项列表的缩进。
8. `int selection;` 声明变量 selection,用于存储用户的菜单选择。
9. `static char * selectedLabel = NULL;` 声明静态指针变量 selectedLabel,用于存储用户选择的菜单项的标签。
10. `drawMenuBar(0,y-h,winwidth,h);` 在窗口上绘制一个菜单栏。
11. `selection = menuList(GenUIID(0), x, y-h, w, wlist, h, menuListFile, sizeof(menuListFile)/sizeof(menuListFile[0]));` 调用 menuList 函数,显示一个菜单项列表,并将用户的选择存储在变量 selection 中。menuList 函数的参数依次为:菜单项列表的唯一 ID、菜单项列表左上角的 x 坐标、y 坐标、菜单项列表的宽度、菜单项列表中每个菜单项的宽度、菜单项列表的高度、菜单项列表中每个菜单项的标签数组以及菜单项数量。
12. `if( selection>0 ) selectedLabel = menuListFile[selection];` 如果用户选择了一个菜单项,则将该菜单项的标签存储在 selectedLabel 中。
13. `if(selection!=0) printf("%d\n",selection);` 如果用户选择了一个菜单项,则在控制台输出该菜单项的编号。
14. `switch(selection) { ... }` 根据用户的菜单选择做出相应的操作。在这里,根据选择的菜单项的编号,执行不同的操作。
15. `selection = menuList(GenUIID(0),x+w,y-h, w, wlist, h, menuListHelp,sizeof(menuListHelp)/sizeof(menuListHelp[0]));` 显示另一个菜单项列表,并将用户的选择存储在变量 selection 中。
16. `if( selection>0 ) selectedLabel = menuListHelp[selection];` 如果用户选择了一个菜单项,则将该菜单项的标签存储在 selectedLabel 中。
17. `if( selection==1 ) { ... }` 如果用户选择了第一个菜单项,则执行相应的操作。在这里,根据 show_more_buttons 变量的值,决定显示或隐藏更多按钮。
阅读全文