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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? menu.cpp

?? 串行通信編程源碼
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
int     Menu::DisplaySubMenu(Menu *n,       // entry to highlight
                             Window *w)     // window to display in
{
int  w_row = 1,                             // work row in menu bar
     s_row;                                 // row of selected entry
Menu *m = this;                             // work menu pointer


for (;;)                                    // loop 'til all done
    {
    w->AtSay(1, w_row, " ");                // put some space out

    if (m == n)                             // q. find entry?
        {
        w->DisplayReverse(m->item);         // a. yes .. highlight it
        s_row = w_row;                      // ..and save row number
        }
     else
        w->Display(m->item);                // else .. display normally

    w_row++;                                // next row number

    if ((m = m->next) == 0)                 // q. end of list?
        break;                              // a. yes .. exit loop
    }

return(s_row);                              // return with entry's row

}



/* ******************************************************************** *
 *
 *  DoMenuAction -- process menu entry
 *
 * ******************************************************************** */

int     Menu::DoMenuAction(Menu *m,         // selected menu entry
                           int c, int r)    // column and row
{

c += 2;                                     // new column number
r++;                                        // ..and row number

if (m->sub == 0)                            // q. submenu present?
    {                                       // a. no .. continue
    if (m->fnc != 0)                        // q. function available?
        return((*(m->fnc))(c, r));          // a. yes .. call it
     else
        return(0);                          // else .. just return
    }

 else
    return(m->sub->DisplaySub(c, r));       // else .. do submenu
}



/* ******************************************************************** *
 *
 *  Find -- find a menu entry by key
 *
 * ******************************************************************** */

Menu *Menu::Find(char c)                    // key to search for
{
Menu *m = this;                             // work menu pointer

c = toupper(c);                             // force uppercase search

for (;;)                                    // loop thru the list
    {
    if (toupper(m->key) == c)               // q. find the entry?
        return(m);                          // a. yes .. quit here

    if ((m = m->next) == 0)                 // q. end of list?
        break;                              // a. yes .. exit loop
    }

return(0);                                  // else return empty-handed

}



/* ******************************************************************** *
 *
 *  FindAlt -- find a menu entry by alt character (scan code)
 *
 * ******************************************************************** */

Menu *Menu::FindAlt(char alt_c)             // scan code to search
{
Menu *m = this;                             // work menu pointer


for (;;)                                    // loop thru the list
    {
    if (m->alt_key == alt_c)                // q. find the entry?
        return(m);                          // a. yes .. quit here

    if ((m = m->next) == 0)                 // q. end of list?
        break;                              // a. yes .. exit loop
    }

return(0);                                  // else return empty-handed

}



/* ******************************************************************** *
 *
 *  Left -- find a menu entry's left
 *
 * ******************************************************************** */

Menu *Menu::Left(Menu *m)                   // source menu entry
{
Menu *t = this,                             // target menu pointer
     *last;                                 // last processed entry

for (;;)                                    // loop thru the list
    {
    if (t->next == m)                       // q. find the entry?
        return(t);                          // a. yes .. quit here

    last = t;                               // save last one

    if ((t = t->next) == 0)                 // q. end of list?
        return(last);                       // a. yes .. exit w/last one
    }
}



/* ******************************************************************** *
 *
 *  Right -- find a menu entry's right
 *
 * ******************************************************************** */

Menu *Menu::Right(Menu *m)                  // source menu entry
{

return(m->next ? m->next : this);           // either next or 1st in list

}



/* ******************************************************************** *
 *
 *  MaxWidth -- find the widest menu label
 *
 * ******************************************************************** */

int     Menu::MaxWidth(void)
{
int     x = 0,                              // max width
        w;                                  // working width
Menu   *m = this;                           // work pointer


for (;;)                                    // loop thru the list
    {
    w = strlen(m->item);                    // get length of this entry

    if (x < w)                              // q. find a larger one?
        x = w;                              // a. yes .. save larger

    if ((m = m->next) == 0)                 // q. end of list?
        return(x);                          // a. yes .. exit loop
    }
}



/* ******************************************************************** *
 *
 *  Count -- find the count of menu items
 *
 * ******************************************************************** */

int     Menu::Count(void)
{
int     i;                                  // loop counter
Menu   *m = this;                           // work pointer


for (i = 0; m->next; i++, m = m->next)      // count number of entries
    ;

return(i);                                  // ..and return w/count

}



/* ******************************************************************** *
 *
 *  SetColors -- set global menu colors
 *
 * ******************************************************************** */

void    Menu::SetColors(int cn,             // new normal color combo
                        int cr)             // ..and reverse color combo
{

menu_cn = cn;                               // set up new global
menu_cr = cr;                               // ..color scheme

}



/* ******************************************************************** *
 *
 *  ValidateKey -- validate key for a menu
 *
 * ******************************************************************** */

Menu   *Menu::ValidateKey(int c)            // char to check
{


if (c == 0x100)                             // q. just alt key?
    return(this);                           // a. yes .. use first entry

if (c > 0x100)                              // q. alt key?
    return(FindAlt(c));                     // a. yes .. check alt list
 else
    return(Find(c));                        // else .. check regular list

}



/* ******************************************************************** *
 *
 *  ~Menu -- object destructor
 *
 * ******************************************************************** */

Menu::~Menu()
{

delete item;                                // de-allocate string memory

}



/* ******************************************************************** *
 *
 *  get_key() -- get a key (including function keys)
 *
 * ******************************************************************** */

int     get_key(int alt_key)                // nonzero = allow alt_key
{
static
int     k;                                  // local key variable


if ((k = bioskey(1)) != 0)                  // q. key available?
    {                                       // a. yes .. process it
    if (k == -1)                            // q. control break?
        {
        k = 0;                              // a. yes .. clear key,
        wait(1);                            // ..wait a tick, then return
        }
     else
        {
        k = bioskey(0);                     // else .. get waiting key

        if (NOT (k & 0xff))                 // q. fnc or extended key?
            k = 0x100 + (k >> 8);           // a. yes .. show special key
         else
            k &= 0xff;                      // else .. force regular key
        }
    }
 else if (alt_key &&                        // q. allowing alt key?
         (_bios_keybrd(_KEYBRD_SHIFTSTATUS) // ..and one pressed?
            & 0x08))
    k = 0x100;                              // a. yes .. special key
 else
    k = 0;                                  // else .. nothing available

return(k);                                  // return w/key if available

}



/* ******************************************************************** *
 *
 *  get_scan() -- get scan code for a printable character
 *
 * ******************************************************************** */

char    get_scan(unsigned char c)           // ASCII character to convert
{
static
char    scan_codes[] =                      // scan codes for ! thru ~
    {
    0x02, 0x28, 0x04, 0x05, 0x06, 0x08, 0x28, 0x0a, 0x0b, 0x09, 0x0d,
    0x33, 0x0c, 0x34, 0x35, 0x0b, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
    0x08, 0x09, 0x0a, 0x27, 0x27, 0x33, 0x0d, 0x34, 0x35, 0x03, 0x1e,
    0x30, 0x2e, 0x20, 0x12, 0x21, 0x22, 0x23, 0x17, 0x24, 0x25, 0x26,
    0x32, 0x31, 0x18, 0x19, 0x10, 0x13, 0x1f, 0x14, 0x16, 0x2f, 0x11,
    0x2d, 0x15, 0x2c, 0x1a, 0x2b, 0x1b, 0x07, 0x0c, 0x29, 0x1e, 0x30,
    0x2e, 0x20, 0x12, 0x21, 0x22, 0x23, 0x17, 0x24, 0x25, 0x26, 0x32,
    0x31, 0x18, 0x19, 0x10, 0x13, 0x1f, 0x14, 0x16, 0x2f, 0x11, 0x2d,
    0x15, 0x2c, 0x1a, 0x2b, 0x1b, 0x29
    };

return((c >= '!' && c <= '~') ?             // if valid rtn scan code
            scan_codes[c - '!'] : 0);       // ..else return a zero

}



/* ******************************************************************** *
 *
 *  NotYet -- null routine for incomplete menu entries
 *
 * ******************************************************************** */

int     NotYet(int c, int r)                // column and row of window
{
Window  ny_win(c, r, c + 28, r + 3,         // define not yet window
            menu_cn, menu_cr);              // ..using default colors


ny_win.Open(single_line);                   // open window with a border
ny_win.Display(" ** Not Yet Implemented **" //display the not yet message
               "\n\r"
               " Press any key to continue");

while (NOT get_key(NO_ALT))                 // wait for a key
    ;                                       // ..before closing down

return(0);                                  // return to menu system

}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日韩中文国产| 国产精品 欧美精品| 欧美男男青年gay1069videost| 亚洲另类一区二区| 国产色产综合产在线视频| 精品综合免费视频观看| 久久品道一品道久久精品| 成人av电影在线观看| 日韩一区在线免费观看| 在线观看亚洲精品视频| 日韩精品欧美精品| 久久久久久电影| 99re在线精品| 免费观看一级欧美片| 久久综合九色综合97婷婷| av亚洲精华国产精华| 图片区小说区区亚洲影院| 精品久久久久久久人人人人传媒 | 亚洲精品视频一区| 欧美日韩亚洲国产综合| 国产一区日韩二区欧美三区| 国产精品视频看| 欧美日韩一区精品| 国产自产视频一区二区三区| 亚洲精品日韩一| 91精品国产综合久久精品麻豆 | 国产一区视频在线看| 国产精品三级视频| 91精品久久久久久蜜臀| 成人美女视频在线观看18| 亚洲国产日产av| 国产日韩欧美精品综合| 欧美色精品在线视频| 国产激情91久久精品导航| 午夜精品成人在线| 国产日产精品一区| 制服丝袜中文字幕亚洲| 国产精一区二区三区| 亚洲国产乱码最新视频| 久久66热偷产精品| 亚洲色图第一区| 久久综合久久综合久久| 欧美综合一区二区| 国产精品456| 久久精品av麻豆的观看方式| 亚洲狼人国产精品| 国产视频一区不卡| 日韩欧美一级片| 欧美日韩高清一区二区不卡| 成年人国产精品| 国产精品一线二线三线精华| 日本欧美肥老太交大片| 亚洲日本成人在线观看| 国产午夜精品一区二区三区视频| 欧美日韩国产影片| 色婷婷av久久久久久久| 成人性生交大合| 国产风韵犹存在线视精品| 日韩综合小视频| 无码av中文一区二区三区桃花岛| 亚洲免费资源在线播放| 亚洲国产精品成人综合| 久久影院午夜论| 欧美不卡视频一区| 日韩欧美另类在线| 91精品啪在线观看国产60岁| 欧美人与禽zozo性伦| 色94色欧美sute亚洲13| 91免费在线看| 国产亚洲一区字幕| 精品处破学生在线二十三| 日韩一区国产二区欧美三区| 欧美精品在线视频| 777色狠狠一区二区三区| 69堂成人精品免费视频| 欧美剧情片在线观看| 欧美伦理电影网| 欧美精品在欧美一区二区少妇| 欧美理论电影在线| 欧美一级艳片视频免费观看| 日韩欧美国产三级电影视频| 日韩三级精品电影久久久| 日韩视频在线你懂得| 日韩欧美国产小视频| 久久视频一区二区| 中文字幕第一区综合| 最新欧美精品一区二区三区| 日韩毛片一二三区| 亚洲一区二区高清| 午夜伦理一区二区| 久久99久国产精品黄毛片色诱| 精品一区二区三区在线观看 | 亚洲综合视频网| 亚洲成人第一页| 久久精品国产一区二区三区免费看| 日韩成人午夜电影| 黄一区二区三区| 成人在线综合网| 欧美性色黄大片| 日韩欧美你懂的| 国产精品女同互慰在线看 | 亚洲国产日产av| 老司机一区二区| 成人永久aaa| 精品污污网站免费看| 日韩欧美一区在线| 中文字幕二三区不卡| 亚洲成人一二三| 国产最新精品精品你懂的| 99精品1区2区| 亚洲成人www| 国产精品影视网| 在线视频一区二区免费| 欧美大片在线观看| 国产精品久久久久久久久动漫 | 亚洲国产中文字幕在线视频综合| 日韩av一二三| 成人精品视频一区二区三区| 91国产免费看| 久久精品一二三| 亚洲综合精品久久| 国产一区二三区| 欧美在线短视频| 国产欧美精品在线观看| 亚洲午夜一区二区| 国产成人免费视频精品含羞草妖精 | 国产盗摄精品一区二区三区在线| 欧美中文字幕一区二区三区 | 亚洲激情在线播放| 精品一区二区在线观看| 欧美在线观看你懂的| 国产精品无遮挡| 国产在线精品一区二区夜色| 日本乱人伦aⅴ精品| 日本一区二区免费在线观看视频| 日韩国产精品大片| 91久久香蕉国产日韩欧美9色| 精品国产免费人成电影在线观看四季| 亚洲精品高清视频在线观看| 成人综合在线视频| 久久在线观看免费| 蜜臀av一区二区在线免费观看| 91精品福利视频| 日韩理论电影院| 国产99精品在线观看| 亚洲图片欧美色图| 91网站在线播放| 国产精品狼人久久影院观看方式| 九九久久精品视频| 91精品在线观看入口| 亚洲国产cao| 欧美揉bbbbb揉bbbbb| 一区二区欧美国产| 色综合久久中文综合久久牛| 中文字幕亚洲成人| 成人免费看片app下载| 国产日韩视频一区二区三区| 激情综合五月婷婷| 欧美va日韩va| 激情综合网激情| 日韩欧美国产不卡| 另类中文字幕网| 精品电影一区二区| 国产电影精品久久禁18| 国产日韩精品一区二区三区| 国产麻豆视频精品| 日本一区二区三区高清不卡| 国产.精品.日韩.另类.中文.在线.播放 | 奇米777欧美一区二区| 7777精品伊人久久久大香线蕉最新版| 尤物在线观看一区| 欧美在线视频不卡| 亚洲aaa精品| 日韩视频一区在线观看| 激情欧美一区二区| 久久精品一区四区| proumb性欧美在线观看| 一区二区三区欧美亚洲| 欧美亚洲动漫另类| 五月天网站亚洲| 精品少妇一区二区三区在线视频| 国产做a爰片久久毛片| 国产欧美日韩综合精品一区二区| av在线一区二区| 亚洲一区二区三区四区不卡| 在线电影国产精品| 国产一区二区三区免费看| 国产欧美日韩精品在线| 色系网站成人免费| 视频一区二区三区入口| 欧美va亚洲va在线观看蝴蝶网| 国产成人精品免费一区二区| 综合av第一页| 欧美电影在哪看比较好| 国内精品视频一区二区三区八戒| 亚洲国产精品成人综合| 欧美日韩一本到| 国产一区二区视频在线| 亚洲激情av在线| 2024国产精品视频|