亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? wmenu.c

?? 詳細(xì)介紹了一篇關(guān)于pci開發(fā)的接口芯片
?? C
?? 第 1 頁 / 共 3 頁
字號:
                break;

            case 0x4f00:    /* End */

                /* hide selection bar and find */
                /* lower-rightmost menu item   */
                citem=goto_item(citem,ITM_LS);
                break;

            case 0x1c0d:    /* Enter */
enter:
                /* if current menu item has a pull-down menu */
                /* attached, then set the pulldown flag      */
                if(citem->fmask&M_HASPD) pulldown=YES;

                /* display menu item with selection bar */
                disp_item(citem,1);

                menuerr=0;

                /* if current menu item has a child menu */
                if(citem->child!=NULL) {

                    /* save environment info, process child */
                    /* menu, then restore environment info  */
                    _winfo.cmenu=citem->child;
                    hide_mouse_cursor();
                    err=whelpush();
                    menuerr=wmenuget();
                    winerr=_winfo.errno;
                    if(!err) whelpop();
                    show_mouse_cursor();
                    _winfo.cmenu=_winfo.cmenu->parent;

                    /* if an error was returned by   */
                    /* child menu, free menu records */
                    /* and pass error code to caller */
                    if(menuerr==-1&&winerr!=W_ESCPRESS) {
                        call_after(citem);
                        menuerr=winerr;
                        pre_exit(w,YES);
                        _winfo.errno=menuerr;
                        return(-1);
                    }
                }

                /* if the M_CLOSB feature is on, then close the menu's */
                /* window before the selection function is called.     */
                if(citem->fmask&M_CLOSB) close_window(w);

                /* this is used as a flag to see if the selection bar's */
                /* position has been changed by the select function.    */
                _winfo.cmenu->tagcurr=-1;

                /* if current menu item has a select function, call it */
                if(citem->select!=NULL) call_func(citem->select);

                /* if the M_CLOSB feature is on, then free the current */
                /* menu a before the selection function is called.     */
                if(citem->fmask&M_CLOSB) {
                    call_after(citem);
                    pre_exit(w,NO);
                    _winfo.errno=W_NOERROR;
                    return(citem->tagid);
                }

                /* check all menu items in current menu to  */
                /* see if their redisplay flag has been set */
                for(item=_winfo.cmenu->item;item!=NULL;item=item->prev) {
                    if(item->redisp) {
                        disp_item(item,(item==citem));
                        item->redisp=NO;
                    }
                }

                /* see if selection bar position was changed by select   */
                /* function.  if so, then move selection bar to new item */
                if(_winfo.cmenu->tagcurr!=-1) {
                    item=wmenuifind(_winfo.cmenu->tagcurr);
                    if(item!=NULL&&(!(item->fmask&M_NOSEL))) {
                        pre_move(citem);
                        post_move(_winfo.cmenu->citem=citem=item);
                        break;
                    }
                }

                /* if current menu item has a pull-down attached */
                if(citem->fmask&M_HASPD) {

                    /* if child menu returned previous pull-down menu */
                    /* flag, find menu item to the left and select it */
                    if(menuerr==M_PREVPD) {
                        citem=goto_item(citem,ITM_LT);
                        if(citem->fmask&M_HASPD) goto enter;
                        break;
                    }

                    /* if child menu returned next pull-down menu      */
                    /* flag, find menu item to the right and select it */
                   if(menuerr==M_NEXTPD) {
                        citem=goto_item(citem,ITM_RT);
                        if(citem->fmask&M_HASPD) goto enter;
                        break;
                    }
                }

                /* turn off pulldown flag */
                pulldown=NO;

                /* if child menu returned an exit-all-menus flag, */
                /* then free menu records and pass exit-all-menus */
                /* flag onto caller                               */
                if((menuerr==M_EXITALL)||(citem->fmask&M_CLALL)) {
                    disp_item(citem,1);
                    call_after(citem);
                    pre_exit(w,YES);
                    _winfo.errno=W_NOERROR;
                    return(M_EXITALL);
                }

                /* unless an exit-this-menu flag was returned by the */
                /* child menu, or current item has close-menu        */
                /* specified, free menu records, and return tag      */
                /* identifier of current menu item                   */
                if(citem->child!=NULL||citem->select!=NULL)
                    if((menuerr!=M_EXIT)&&(!(citem->fmask&M_CLOSE)))
                        break;
                call_after(citem);
                pre_exit(w,YES);
                _winfo.errno=W_NOERROR;
                return(citem->tagid);

            default:

                /* separate ASCII code from keypress code, if ASCII */
                /* code is zero, then it must be an extended key    */
                ch=(char)xch;
                if(!ch) break;

                /* scan through list of items for one that */
                /* has a tag identifier matching keypress  */
                valid=YES;
                item=citem->next;
                for(;;) {
                    while(item!=NULL) {
                        if((toupper(ch)==toupper(item->schar))&&(!(item->fmask
                          &M_NOSEL))) goto farbreak;
                        if(citem==item) {
                            valid=NO;
                            goto farbreak;
                        }
                        item=item->next;
                    }
                    for(item=_winfo.cmenu->item;item->prev!=NULL;
                      item=item->prev);
                }
farbreak:

                /* if a matching tag identifier was found,          */
                /* then hide selection bar, and if quick-key        */
                /* selection is allowed, select the found menu item */
                if(valid) {
                    if(item!=citem) {
                        pre_move(citem);
                        post_move(_winfo.cmenu->citem=citem=item);
                    }
                    if(!(_winfo.cmenu->menutype&M_NOQS)) goto enter;
                }
        }
    }
}

/*---------------------------------------------------------------------------*/

/* this function will calculate the width of the selection bar */

static int calc_bar_width(struct _menu_t *wmenu,struct _item_t *witem)
{
    register int width;

    width=strlen(witem->str);
    if(wmenu->barwidth) width=wmenu->barwidth;
    return(width);
}

/*---------------------------------------------------------------------------*/

/* this function will calculate the window column */
/* at the center of the given menu item           */

static int calc_center_item(struct _item_t *item)
{
    return( ((int)item->wcol) + (strlen(item->str)/2) );
}

/*---------------------------------------------------------------------------*/

/* this function will call a menu item's "after" function if it exists */

static void call_after(struct _item_t *citem)
{
    if(citem->after!=NULL) call_func(citem->after);
}

/*---------------------------------------------------------------------------*/

/* this function will call a menu item's "before" function if it exists */

static void call_before(struct _item_t *citem)
{
    if(citem->before!=NULL) call_func(citem->before);
}

/*---------------------------------------------------------------------------*/

/* this function calls the given function */

static void call_func(void (*func)(void))
{
    struct _menu_t *menu;
    WINDOW w;
    int err;

    hide_mouse_cursor();
    menu=_winfo.cmenu;
    w=whandle();
    err=whelpush();
    (*func)();
    wactiv(w);
    if(!err) whelpop();
    _winfo.cmenu=menu;
    show_mouse_cursor();
}

/*---------------------------------------------------------------------------*/

/* this function closes the current menu's window and reactivates */
/* the menu window open prior to opening the current menu window  */

static void close_window(WINDOW w)
{
    if(!_winfo.cmenu->usecurr) {
        hide_mouse_cursor();
        wclose();
        wactiv(w);
        show_mouse_cursor();
    }
}

/*---------------------------------------------------------------------------*/

/* this function displays a menu selection, using selection bar if specified */

static void disp_item(struct _item_t *witem,int bar)
{
    register char *p;
    register int i;
    int ch,textend,width,chattr,wcol,found=NO;

    /* if mouse cursor is on, temporarily hide it */
    hide_mouse_cursor();

    /* initialize width of output and end of text */
    p=witem->str;
    width=calc_bar_width(_winfo.cmenu,witem);
    textend=_winfo.cmenu->textpos+strlen(p)-1;
    wgotoxy(witem->wrow,wcol=witem->wcol);

    /* display menu item including selection bar */
    for(i=0;i<width;i++) {

        /* see if currently in bar region.  if so, then use  */
        /* a space for the character. otherwise use the      */
        /* character from the current position in the string */
        ch=(i<_winfo.cmenu->textpos||i>textend)?' ':(*p++);

        /* select attribute of character to be displayed based upon if      */
        /* selection bar was specified, if the menu item is non-selectable, */
        /* if the character is a tag character, or none of the above.       */
        if(bar)
            chattr=_winfo.cmenu->barattr;
        else if(witem->fmask&M_NOSEL)
            chattr=_winfo.cmenu->noselattr;
        else if((ch==witem->schar)&&!found) {
            found=YES;
            chattr=_winfo.cmenu->scharattr;
        }
        else
            chattr=_winfo.cmenu->textattr;

        /* display character in selected attribute */
        wprintc(witem->wrow,wcol++,chattr,ch);
    }

    /* display text description, if one exists */
    if(witem->desc!=NULL&&dispdesc) {
        wgotoxy(witem->dwrow,witem->dwcol);
        wtextattr(witem->dattr);
        wputs(witem->desc);
        wclreol();
    }

    /* if mouse cursor is hidden, unhide it */
    show_mouse_cursor();
}

/*---------------------------------------------------------------------------*/

/* this function finds the next menu selection down */

static struct _item_t *down_item(struct _item_t *curr)
{
    struct _item_t *best,*temp;
    int brow,bcol,tcol,trow,crow,ccol,tdist,bdist;

    /* initialize best record to NULL */
    best=NULL;
    brow=bcol=32767;

    /* calculate window column at center of current item */
    crow=(int)curr->wrow;
    ccol=calc_center_item(curr);

    /* search backwards through linked list, testing each item */
    for(temp=_winfo.cmenu->item;temp!=NULL;temp=temp->prev) {

        /* calculate window column at center of test item */
        trow=(int)temp->wrow;
        tcol=calc_center_item(temp);

        if(trow>crow) {
            tdist=abs((ccol-tcol));
            bdist=abs((ccol-bcol));
            if((trow<brow)||((trow==brow&&tdist<bdist))) {
                best=temp;
                brow=trow;
                bcol=tcol;
            }
        }
    }

    /* if there wasn't an item downwards, then wrap around */
    if(best==NULL) {
        if((temp=malloc(sizeof(struct _item_t)))==NULL) {
            best=curr;
        }
        else {
            *temp=*curr;
            temp->wrow=-1;
            best=down_item(temp);
            free(temp);
        }
    }
    else
        /* see if menu selection is non-selectable */
        if(best->fmask&M_NOSEL)
            best=down_item(best);

    /* return best record */
    return(best);
}

/*---------------------------------------------------------------------------*/

/* this function finds the upper-leftmost menu selection */

static struct _item_t *first_item(void)
{
    struct _item_t *best,*temp;

    /* initialize best record to highest record in linked list */
    best=_winfo.cmenu->item;

    /* search backwards through linked list, testing each item */
    for(temp=best->prev;temp!=NULL;temp=temp->prev) {
        if( (temp->wrow<best->wrow) ||
            ( (temp->wrow==best->wrow) && (temp->wcol<best->wcol) ) )

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
激情国产一区二区| 在线免费不卡视频| 日本不卡不码高清免费观看| 一二三区精品福利视频| 亚洲综合在线免费观看| 夜夜操天天操亚洲| 亚洲一区二区欧美激情| 亚洲成va人在线观看| 亚洲成a人v欧美综合天堂下载 | 亚洲欧洲精品成人久久奇米网| 久久久99久久| 国产精品全国免费观看高清| 国产精品网站一区| 国产精品污网站| 成人免费在线播放视频| 亚洲乱码国产乱码精品精可以看| 亚洲欧美一区二区三区久本道91| 一区二区三区视频在线看| 亚洲成人动漫在线免费观看| 免费的国产精品| 国产主播一区二区| aaa欧美大片| 欧美丝袜自拍制服另类| 在线不卡中文字幕播放| 日韩一区二区在线观看视频| 日韩精品在线网站| 中文无字幕一区二区三区| 久久精品综合网| 亚洲欧美在线另类| 亚洲成a人片在线不卡一二三区 | 777a∨成人精品桃花网| 日韩精品一区二区三区在线播放 | 秋霞午夜鲁丝一区二区老狼| 狠狠色丁香婷综合久久| 不卡av免费在线观看| 欧美亚一区二区| 精品第一国产综合精品aⅴ| 国产女人水真多18毛片18精品视频 | 一区二区三区**美女毛片| 亚洲二区视频在线| 国产在线播放一区二区三区| av日韩在线网站| 欧美日韩国产一级片| 久久夜色精品国产欧美乱极品| 成人欧美一区二区三区黑人麻豆| 亚洲成a人v欧美综合天堂下载| 韩国毛片一区二区三区| 色噜噜狠狠色综合欧洲selulu| 日韩一区二区视频在线观看| 国产精品伦理在线| 日本不卡视频在线观看| 91小视频免费看| 日韩免费视频一区| 亚洲黄一区二区三区| 国产揄拍国内精品对白| 欧美日韩中文一区| 国产精品卡一卡二| 男女视频一区二区| 在线亚洲精品福利网址导航| 久久久亚洲国产美女国产盗摄 | 视频一区免费在线观看| 成人国产亚洲欧美成人综合网 | 亚洲成年人影院| 成人动漫中文字幕| 欧美va亚洲va| 五月激情六月综合| av在线不卡网| 国产欧美视频一区二区| 免费看欧美美女黄的网站| 在线精品视频一区二区三四 | 奇米影视一区二区三区| 91精品福利视频| 欧美国产视频在线| 极品销魂美女一区二区三区| 欧美午夜免费电影| 中文字幕一区二区三区视频| 免费不卡在线观看| 欧美日韩情趣电影| 亚洲男同性视频| 国产成人免费视频网站高清观看视频| 欧美性猛交xxxx乱大交退制版| 国产精品亲子乱子伦xxxx裸| 国产精品一区二区黑丝| 精品精品国产高清一毛片一天堂| 午夜影视日本亚洲欧洲精品| 色老头久久综合| 亚洲欧美日韩国产综合| 成人免费黄色大片| 国产性天天综合网| 国产一区在线观看麻豆| 欧美tickling挠脚心丨vk| 日韩电影一区二区三区| 欧美日韩成人在线一区| 亚洲国产综合色| 欧美日韩在线一区二区| 亚洲自拍欧美精品| 在线免费亚洲电影| 亚洲一区二区三区四区五区黄 | 中文字幕第一区综合| 国产高清无密码一区二区三区| 久久蜜桃av一区精品变态类天堂| 久久99热99| 精品国产免费一区二区三区四区| 青青草97国产精品免费观看无弹窗版 | 99国产精品久久久久久久久久久| 日本一区二区视频在线观看| 国产mv日韩mv欧美| 国产精品蜜臀av| 99久久国产免费看| 一区二区三区精品在线| 欧美最猛性xxxxx直播| 亚洲图片欧美色图| 制服丝袜在线91| 久久机这里只有精品| 精品国产成人系列| 成人性生交大片免费看视频在线| 中文字幕亚洲区| 在线视频一区二区免费| 天天综合色天天| 欧美精品一区男女天堂| 粉嫩一区二区三区性色av| 中文字幕在线一区| 在线观看一区日韩| 免费观看日韩电影| 日本一区二区三区dvd视频在线| 成人久久视频在线观看| 亚洲婷婷国产精品电影人久久| 91激情五月电影| 午夜精品福利一区二区蜜股av| 日韩欧美国产三级电影视频| 国产精品原创巨作av| 亚洲理论在线观看| 欧美一区二区三区在线看| 国产精品综合在线视频| 亚洲精品视频在线观看网站| 日韩午夜三级在线| 成人黄色电影在线 | 国产伦精品一区二区三区免费 | 成人免费视频免费观看| 亚洲图片欧美视频| 欧美精品一区二区三区在线| 丁香桃色午夜亚洲一区二区三区 | 91麻豆精品视频| 蜜桃av一区二区三区电影| 国产欧美1区2区3区| 欧美日韩一级片网站| 国产成人免费视频网站高清观看视频| 中文字幕视频一区二区三区久| 欧美日韩黄视频| 成人性生交大合| 日本不卡视频一二三区| 亚洲视频在线一区二区| 日韩欧美国产三级电影视频| 91在线视频18| 男男gaygay亚洲| 亚洲另类一区二区| 久久午夜国产精品| 欧美福利视频一区| 99国产一区二区三精品乱码| 精品在线播放免费| 亚洲综合色成人| 欧美激情艳妇裸体舞| 91精品国产综合久久精品图片| 99免费精品视频| 国内成人精品2018免费看| 亚洲一区中文在线| 国产欧美一区二区精品秋霞影院 | 国产三级久久久| 欧美一区二区三区白人| 色狠狠桃花综合| 成人黄动漫网站免费app| 美女网站色91| 午夜精品福利一区二区三区蜜桃| 中文字幕在线不卡国产视频| xnxx国产精品| 91精品国产色综合久久ai换脸 | 国产欧美在线观看一区| 欧美老女人在线| 一本久道中文字幕精品亚洲嫩 | 国产日韩av一区| 欧美一区二区在线播放| 91黄色小视频| 91免费国产在线| 国产成人av一区二区三区在线| 男人的j进女人的j一区| 亚洲电影中文字幕在线观看| 最新欧美精品一区二区三区| 国产女同互慰高潮91漫画| 日韩亚洲欧美成人一区| 欧美精品aⅴ在线视频| 欧美亚洲综合另类| 91豆麻精品91久久久久久| 91在线看国产| 成人自拍视频在线| 国产精品一区一区| 国产精品自拍毛片| 国产九色精品成人porny| 国内精品伊人久久久久影院对白| 青青草国产成人av片免费| 奇米一区二区三区av|