|
发表于 2011-12-3 20:22:54
|
显示全部楼层
本帖最后由 Wudy 于 2011-12-3 20:40 编辑
30# Wudy
注意,菜单的选项的宽度不同,如果反色输出还要用sprintf把空格对齐才行,不如计算反色区域坐标
diameter 发表于 2011-12-3 20:06 刚才看了很久忘了是这种菜单......不过这种菜单不常用吧。
我用的一般是没边框的,标题另外输出的那种,insight、Aspirine 用的也是这种。
附上我的popmenu(不带标题)- int pop_menu( int x, int y, char *option[], int not )
- {
- unsigned int key;
- int i, index = 0;
- int redraw = 1;
- while( 1 ){
- if( redraw ){
- redraw = 0;
- for( i = 0; i < not; i++ ){
- if( i == index )
- PrintXY( x, y + 8 * i, option[i], 1 );
- else
- PrintXY( x, y + 8 * i, option[i], 0 );
- }
- }
- GetKey( &key );
- switch( key ){
- case KEY_CTRL_UP:
- if( index ) index--;
- else index = not - 1;
- redraw = 1;
- break;
- case KEY_CTRL_DOWN:
- if( index < not - 1 ) index++;
- else index = 0;
- redraw = 1;
- break;
- case KEY_CTRL_EXE:
- return index;
- case KYE_CTRL_EXIT:
- return -1;
- }
- }
- }
复制代码 |
|