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

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

?? menu.cpp

?? 在嵌入時系統uc-osii中實現的串口程序
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
                             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一区二区三区免费野_久草精品视频
欧美日韩视频在线第一区| 色综合久久久久| 欧美中文字幕一区二区三区| 亚洲成av人片在线| 国产成人精品免费在线| 日韩一区二区三区四区五区六区| 中文字幕日韩av资源站| 狠狠色狠狠色综合系列| 欧美专区亚洲专区| 国产精品电影一区二区三区| 国内成人自拍视频| 日韩欧美一级在线播放| 亚洲国产美国国产综合一区二区| 成人激情午夜影院| 26uuu欧美日本| 免费看日韩精品| 欧美丝袜自拍制服另类| 亚洲人快播电影网| 懂色av噜噜一区二区三区av| 精品国产精品一区二区夜夜嗨| 亚洲国产欧美在线人成| 91在线丨porny丨国产| 国产亚洲一区二区三区四区| 麻豆精品一二三| 欧美剧情片在线观看| 亚洲福利一区二区| 在线精品视频小说1| 亚洲少妇屁股交4| 99久久久免费精品国产一区二区| 久久亚洲免费视频| 久久国内精品视频| 日韩欧美国产一二三区| 日本不卡1234视频| 欧美一级日韩一级| 日本成人在线看| 3atv在线一区二区三区| 天天综合色天天综合| 欧美日本精品一区二区三区| 午夜一区二区三区在线观看| 欧美性一级生活| 亚洲电影一级片| 欧美日韩免费观看一区三区| 亚洲成人免费影院| 欧美日本在线视频| 日韩 欧美一区二区三区| 欧美一区二区福利视频| 美女一区二区三区| 欧美精品一区视频| 国产乱码精品一区二区三区五月婷| 亚洲精品一区二区三区福利| 国产成人免费视频| 国产精品久久久久久久久果冻传媒| 不卡av免费在线观看| 亚洲日本在线天堂| 欧美亚一区二区| 视频在线观看一区二区三区| 666欧美在线视频| 美国欧美日韩国产在线播放| 337p日本欧洲亚洲大胆色噜噜| 国产一区二区在线看| 中文字幕乱码亚洲精品一区| 99久久er热在这里只有精品15 | 99re这里都是精品| 亚洲欧美一区二区不卡| 色婷婷av久久久久久久| 亚洲一区欧美一区| 日韩午夜激情视频| 国产河南妇女毛片精品久久久| 国产精品欧美久久久久无广告| 99免费精品视频| 偷拍自拍另类欧美| 久久尤物电影视频在线观看| 成人免费视频免费观看| 亚洲综合在线视频| 91麻豆精品国产综合久久久久久| 精品影视av免费| 国产精品久久三区| 欧美日本精品一区二区三区| 久久成人免费网站| 国产精品久久久久一区 | 国内成+人亚洲+欧美+综合在线| 久久久国产精品麻豆| 91啪在线观看| 日韩不卡在线观看日韩不卡视频| 久久新电视剧免费观看| 国产不卡一区视频| 亚洲国产成人av网| 久久先锋影音av鲁色资源网| 99久久久精品免费观看国产蜜| 五月综合激情婷婷六月色窝| 久久亚洲二区三区| 欧美午夜片在线观看| 国产一区二区三区综合| 国产精品大尺度| 欧美一区二区三区男人的天堂| 波多野结衣91| 免费视频最近日韩| 亚洲男人的天堂一区二区| 日韩视频123| 91免费在线视频观看| 麻豆精品一区二区三区| 国产精品一区二区果冻传媒| 亚洲综合色噜噜狠狠| 精品处破学生在线二十三| 91丝袜国产在线播放| 激情综合五月天| 亚洲影视在线观看| 国产精品久久久久久久午夜片| 欧美一区二区黄| 在线视频欧美精品| 国产盗摄一区二区| 日本女优在线视频一区二区| 亚洲欧洲精品一区二区三区| 精品剧情在线观看| 欧美日韩在线免费视频| 成人午夜短视频| 蜜臀精品一区二区三区在线观看 | 欧美极品美女视频| 91精品国产美女浴室洗澡无遮挡| 91视视频在线直接观看在线看网页在线看 | 欧美色老头old∨ideo| 成人午夜视频网站| 久久国产精品99精品国产 | 亚洲欧美色图小说| 久久精品一区二区三区av| 7777精品伊人久久久大香线蕉超级流畅| 成人一区在线看| 国产在线精品视频| 日韩高清中文字幕一区| 亚洲夂夂婷婷色拍ww47| 中文字幕一区二区三区视频 | 色天使色偷偷av一区二区| 国产99一区视频免费| 久久精品国产成人一区二区三区| 亚洲一区二区三区在线| 亚洲欧美激情小说另类| 中文字幕乱码久久午夜不卡| 精品久久久久久久久久久久久久久久久 | 日韩女优av电影在线观看| 日本高清成人免费播放| av动漫一区二区| 粉嫩av一区二区三区在线播放| 韩国av一区二区三区| 另类专区欧美蜜桃臀第一页| 日日摸夜夜添夜夜添国产精品| 亚洲国产美国国产综合一区二区| 一区二区三区小说| 亚洲人成网站影音先锋播放| 中文字幕制服丝袜成人av | 91精品国产综合久久精品app | 99国产精品久| av午夜一区麻豆| 99在线热播精品免费| 成人av免费在线播放| 不卡的看片网站| 99国产精品久| 91福利在线观看| 欧美亚洲日本国产| 欧美日韩一区精品| 欧美日韩不卡在线| 日韩一级高清毛片| 精品乱人伦小说| 久久人人超碰精品| 国产偷v国产偷v亚洲高清| 中文子幕无线码一区tr| 国产精品久久久久影院老司| 专区另类欧美日韩| 亚洲精品大片www| 亚洲综合另类小说| 日韩中文字幕91| 久久精品二区亚洲w码| 国产在线精品不卡| 波多野结衣精品在线| 91国模大尺度私拍在线视频| 欧美三级乱人伦电影| 欧美一区二区三区四区视频 | 在线观看成人免费视频| 欧美日韩一级视频| 91精品在线免费| 精品99久久久久久| 国产欧美精品区一区二区三区| 国产精品久99| 亚洲午夜国产一区99re久久| 日日欢夜夜爽一区| 国产乱码精品1区2区3区| a级精品国产片在线观看| 欧美视频中文字幕| 精品久久久久久久久久久院品网 | 亚洲欧洲精品一区二区三区不卡| 亚洲精品视频在线| 日韩专区一卡二卡| 国产一区 二区| 色综合婷婷久久| 91麻豆精品国产| 国产精品视频九色porn| 亚洲一区二区欧美激情| 精品在线免费观看| 91丝袜国产在线播放| 欧美一级片在线| 国产精品免费av|