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

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

?? maingui.c

?? DOS環境下圖形用戶界面支持系統
?? C
?? 第 1 頁 / 共 4 頁
字號:
        iIndex = GetNextNormalMenuItem(pNormalMenuItem, iIndex);

    return iIndex;
}

/*
 * Function: static int GetPreviousNormalMenuItem(PNORMALMENUITEM pNormalMenuItem, int iIndex)
 * Parameters:
 * Return:
 *      None;
 *
 * 1995.8.9.AM.
 *
 */
static int GetPreviousNormalMenuItem(PNORMALMENUITEM pNormalMenuItem, int iIndex)
{
    int iNum;
    iNum = GetNumOfNormalMenuItem(pNormalMenuItem);
    
    if(iIndex == 0)
        iIndex = iNum;

    iIndex--;
    
    if((pNormalMenuItem + iIndex)->fItemFlags & MF_MENUBREAK)
        iIndex = GetPreviousNormalMenuItem(pNormalMenuItem, iIndex);

    return iIndex;
}

/*
 * Function: static int GetNumOfNormalMenuItem(PNORMALMENUITEM pNormalMenuItem);
 * Parameters:
 * Return:
 *      None;
 *
 * 1995.8.9.AM.
 *
 */
static int GetNumOfNormalMenuItem(PNORMALMENUITEM pNormalMenuItem)
{
    int iNum = 0;
    PNORMALMENUITEM pBuffer = pNormalMenuItem;
    
    do
    {
        iNum++;
        if(pBuffer->fItemFlags & MF_END)
            break;
            
        pBuffer++;
    }while(TRUE);
    
    return iNum;
}

/*
 * Function: void GUIAPI DrawPopupMenu( PPOPUPMENUITEM pPopupMenuItem, int x, int y )
 * Parameters:
 * Return:
 *      None;
 *
 * 1995.8.9.AM.
 *
 */
void GUIAPI DrawPopupMenu( PPOPUPMENUITEM pPopupMenuItem, int x, int y )
{
    int iWidth, iHeight;
    PNORMALMENUITEM pBuffer = pPopupMenuItem->pNormalMenuItem;
    
    iWidth = GetPopupMenuWidth(pPopupMenuItem);
    iHeight = GetPopupMenuHeight(pPopupMenuItem);

    SetPtrVis(HIDE);

    // Fill background and draw the border.
    _setcolor(MN_BKCOLOR);
    _rectangle(_GFILLINTERIOR, x, y, x + iWidth, y + iHeight);
    _setcolor(0);
    _rectangle(_GBORDER, x - 1, y - 1, x + iWidth + 1, y + iHeight + 1);
    _moveto(x, y + iHeight + 2);
    _lineto(x + iWidth + 2, y + iHeight + 2);
    _lineto(x + iWidth + 2, y);
    
    do
    {
        if(pBuffer->fItemFlags & MF_MENUBREAK)
        {
            _setcolor(0);
            _moveto(x, y + MB_HEIGHT);
            _lineto(x + iWidth, y + MB_HEIGHT);
            y += MB_HEIGHT*2 + 1;
        }
        else
        {
            DrawMenuItem(pBuffer->spItemText, FALSE, pBuffer->fItemFlags, x, y, iWidth);
            y += MN_HEIGHT;
        }

        if(pBuffer->fItemFlags & MF_END)
            break;
            
        pBuffer++;
    }while(TRUE);
    
    SetPtrVis(SHOW);
}

/*
 * Function: int GUIAPI GetPopupMenuWidth( PPOPUPMENUITEM pPopupMenuItem )
 * Parameters:
 * Return:
 *      None.
 *
 * 1995.8.9.AM.
 *
 */
int GUIAPI GetPopupMenuWidth( PPOPUPMENUITEM pPopupMenuItem )
{
    int iWidth = 0;
    int x;
    PNORMALMENUITEM pBuffer = pPopupMenuItem->pNormalMenuItem;
    
    do
    {
        if(pBuffer->fItemFlags & MF_MENUBREAK)
        {
            pBuffer++;
            continue;
        }
            
        x = GetOutWidth(pBuffer->spItemText);
        if(iWidth < x)
            iWidth = x;
        if(pBuffer->fItemFlags & MF_END)
            break;
        
        pBuffer++;
    }while(TRUE);
    
    return iWidth + MN_START_WIDTH + MN_END_WIDTH;
}

/*
 * Function: int GUIAPI GetPopupMenuHeight( PPOPUPMENUITEM pPopupMenuItem )
 * Parameters:
 * Return:
 *      None;
 *
 * 1995.8.9.AM.
 *
 */
int GUIAPI GetPopupMenuHeight( PPOPUPMENUITEM pPopupMenuItem )
{
    int iHeight = 0;
    PNORMALMENUITEM pBuffer = pPopupMenuItem->pNormalMenuItem;
    
    do
    {
        if(pBuffer->fItemFlags & MF_MENUBREAK)
            iHeight += MB_HEIGHT*2 + 1;
        else
            iHeight += MN_HEIGHT;

        if(pBuffer->fItemFlags & MF_END)
            break;
        
        pBuffer++;
    }while(TRUE);
    
    return iHeight;
}

/*
 * Function: void GUIAPI DrawMenuItem( PSTR pStr, WORD fFlags, int x, int y, int iWidth)
 *      This function draw the menu item in the specified position with
 *  the specified flags.
 * Parameters:
 *      pStr:   pointer to the item text;
 *      fFlags: menu item's flags;
 *      x, y:   specified the position;
 *      iWidth: the width of menu item.
 * Return:
 *      None;
 *
 * 1995.8.9.AM.
 *
 */
void GUIAPI DrawMenuItem( PSTR pStr, BOOL fHilite, WORD fFlags, int x, int y, int iWidth )
{
    char buffer[5];
    
    if((fFlags & MF_MENUBARBREAK) || (fFlags & MF_MENUBREAK))
        return;
        
    if(fHilite)
    {
        // Fill actived menu item's background.
        _setcolor(MA_BKCOLOR);
        _rectangle(_GFILLINTERIOR, x, y, x + iWidth, y + MN_HEIGHT);
    }
    else
    {
        _setcolor(MN_BKCOLOR);
        _rectangle(_GFILLINTERIOR, x, y, x + iWidth, y + MN_HEIGHT);
    }
    
    
    if(fFlags & MF_DISABLED)
        set_color(MD_FGCOLOR);
    else if(fHilite)
        set_color(MA_FGCOLOR);
    else
        set_color(MN_FGCOLOR);
    
    if(fFlags & MF_POPUP)
        x += MP_START_WIDTH;
    else
        x += MN_START_WIDTH;
        
    if(fFlags & MF_DISABLED)
        SetGrayTextMask();
    cc_printf(pStr, x, y);
    if(fFlags & MF_DISABLED)
        RemoveDisplayMask();
    
    if(!(fFlags & MF_POPUP))
        if(fFlags & MF_CHECKED)
        {
            strcpy(buffer, "√");
            cc_wt16(buffer, x - MN_START_WIDTH, y);
        }
    
}

/*
 * Function: int GUIAPI CanActiveMenuByAltKey(PPOPUPMENUITEM pPopupMenuItem, UINT uKey)
 *      This function determines whether the specified Alt + x Key can 
 *  active the menu.
 * Parameters:
 *      pPopupMenuItem: the pionter to the POPUPMENUITEM structure;
 *      uKey:           the specified key ;
 * Return:
 *      < 0: can not;
 *      >= 0: can active menu and give the index of the popup menu item.
 *
 * 19956.12.5.pM.
 *
 */
int GUIAPI CanActiveMenuByAltKey(PPOPUPMENUITEM pPopupMenuItem, UINT uKey)
{
    char  achHilite[MAXITEM];
    char* pchT;
    char  zChar;
    BYTE  bScanCode;
    int   i, iIndex;
    BYTE  bAllScanCode[] ={ 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
                          };
    
    CreateHiliteStringOfMenuBar(pPopupMenuItem, achHilite);
    
    // Convete scan code to ASCII code.
    bScanCode = LOBYTE(uKey);
    iIndex = -1;
    for(i=0; i<26; i++)
    {
        if(bScanCode == bAllScanCode[i])
        {
            iIndex = i;
            break;
        }
    }
    
    if(iIndex == -1)
        return -1;
    
    zChar = (char)('a' + iIndex);
    pchT = strchr( achHilite, zChar);
    if( pchT != NULL )  // If in highlight string, evaluate
    {
        return (pchT - achHilite);
    }
    
    return -1;
}

/*
 * Function: int GUIAPI CanActiveMenu( PPOPUPMENUITEM pPopupMenuItem, PPOINT pPt )
 *      This function determines weather the specified ponit pt can 
 *  active the menu.
 * Parameters:
 *      pPopupMenuItem: the pionter to the POPUPMENUITEM structure;
 *      :       specified the point.
 * Return:
 *      < 0: can not;
 *      >= 0: can active menu and give the index of the popup menu item.
 *
 * 1995.8.9.AM.
 *
 */
int GUIAPI CanActiveMenu( PPOPUPMENUITEM pPopupMenuItem, PPOINT pPt )
{
    int left = 0, right = 0;
    int i = 0;
    PPOPUPMENUITEM pBuffer = pPopupMenuItem;
    
    do
    {
        if(pBuffer->fItemFlags & MF_MENUBARBREAK)
            right += MB_WIDTH;
        else
        {
            right += MP_START_WIDTH;
            right += GetOutWidth(pBuffer->spItemText);
            right += MP_END_WIDTH;
        }
            
        if( (pPt->y > CP_HEIGHT) 
            && (pPt->y <= CP_HEIGHT + MN_HEIGHT)
            && (pPt->x > left)
            && (pPt->x <= right))
        {
            if(pBuffer->fItemFlags & MF_MENUBARBREAK)
                return FAILURE;
            return i;
        }

        if(pBuffer->fItemFlags & MF_END)
            break;
        
        left = right;
        
        pBuffer++;
        i++;
    }while(TRUE);
    
    return FAILURE;
}

/*
 * Function: static int WhichItemMouseIn(PNORMALMENUITEM pNormalMenuItem, int top, int y)
 * Parameters:
 * Return:
 *      None;
 *
 * 1995.8.9.AM.
 *
 */
static int WhichItemMouseIn(PNORMALMENUITEM pNormalMenuItem, int top, int y)
{
    int bottom = top;
    int i = 0;
    PNORMALMENUITEM pBuffer = pNormalMenuItem;
    
    do
    {
        if(pBuffer->fItemFlags & MF_MENUBREAK)
            bottom += MB_HEIGHT*2 + 1;
        else
            bottom += MN_HEIGHT;
        
        if((y > top) && (y <= bottom))
        {
            if(pBuffer->fItemFlags & MF_MENUBREAK)
                return FAILURE;
            return i;
        }

        if(pBuffer->fItemFlags & MF_END)
            break;
        
        top = bottom;
        
        pBuffer++;
        i++;
    }while(TRUE);
    
    return FAILURE;
}

static PNORMALMENUITEM GetNormalMenuItem(PGUIINFO pGUIInfo, WORD wID)
{
    PPOPUPMENUITEM pPopupMenuItem;
    PNORMALMENUITEM pNormalMenuItem;
    
    pPopupMenuItem = pGUIInfo->pPopupMenuItem;
    while(!(pPopupMenuItem->fItemFlags & MF_END))
    {
        pNormalMenuItem = pPopupMenuItem->pNormalMenuItem;
        while(!(pPopupMenuItem->fItemFlags & MF_END))
        {
            if((WORD)(pNormalMenuItem->iMenuID) == wID)
                return pNormalMenuItem;
            pNormalMenuItem++;
        }
        pPopupMenuItem++;
    }
    
    return NULL;
}

WORD GUIAPI GetPopupMenuItemFlags(PGUIINFO pGUIInfo, int iIndex)
{
    PPOPUPMENUITEM pPopupMenuItem;
    
    pPopupMenuItem = pGUIInfo->pPopupMenuItem + iIndex;
    
    return pPopupMenuItem->fItemFlags;
}

WORD GUIAPI GetNormalMenuItemFlags(PGUIINFO pGUIInfo, int iPopupIndex, int iIndex)
{
    PPOPUPMENUITEM pPopupMenuItem;
    PNORMALMENUITEM pNormalMenuItem;
    
    pPopupMenuItem = pGUIInfo->pPopupMenuItem + iPopupIndex;
    pNormalMenuItem = pPopupMenuItem->pNormalMenuItem + iIndex;

    return pNormalMenuItem->fItemFlags;
}

void GUIAPI EnablePopupMenuItem(PGUIINFO pGUIInfo, int iIndex, BOOL fEnable)
{
    PPOPUPMENUITEM pPopupMenuItem;
    
    pPopupMenuItem = pGUIInfo->pPopupMenuItem + iIndex;
    
    if(fEnable)
        pPopupMenuItem->fItemFlags &= ~MF_DISABLED;
    else
        pPopupMenuItem->fItemFlags |= MF_DISABLED;
}

void GUIAPI EnableNormalMenuItem(PGUIINFO pGUIInfo, int iPopupIndex, int iIndex, BOOL fEnable)
{
    PPOPUPMENUITEM pPopupMenuItem;
    PNORMALMENUITEM pNormalMenuItem;
    
    pPopupMenuItem = pGUIInfo->pPopupMenuItem + iPopupIndex;
    pNormalMenuItem = pPopupMenuItem->pNormalMenuItem + iIndex;

    if(fEnable)
        pNormalMenuItem->fItemFlags &= ~MF_DISABLED;
    else
        pNormalMenuItem->fItemFlags |= MF_DISABLED;
}

void GUIAPI CheckNormalMenuItem(PGUIINFO pGUIInfo, int iPopupIndex, int iIndex, BOOL fCheck)
{
    PPOPUPMENUITEM pPopupMenuItem;
    PNORMALMENUITEM pNormalMenuItem;
    
    pPopupMenuItem = pGUIInfo->pPopupMenuItem + iPopupIndex;
    pNormalMenuItem = pPopupMenuItem->pNormalMenuItem + iIndex;

    if(!fCheck)
        pNormalMenuItem->fItemFlags &= ~MF_CHECKED;
    else
        pNormalMenuItem->fItemFlags |= MF_CHECKED;
}

/*
 * Function: void GUIAPI BeginPaint(PDC pDC);
 * Parameters:
 * Return:
 *      None;
 *
 * 1995.8.10.AM.
 *
 */
void GUIAPI BeginPaint(PDC pDC)
{
    SetPtrVis(HIDE);
    set_cliprgn(pDC->cliprect.left, 
        pDC->cliprect.top,
        pDC->cliprect.right,
        pDC->cliprect.bottom);
}

/*
 * Function: void GUIAPI EndPaint(PDC pDC);
 * Parameters:
 * Return:
 *      None;
 *
 * 1995.8.10.AM.
 *
 */
void GUIAPI EndPaint(PDC pDC)
{
    set_cliprgn(pDC->clientrect.left, 
        pDC->clientrect.top,
        pDC->clientrect.right,
        pDC->clientrect.bottom);
    SetPtrVis(SHOW);
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日本一区二区视频在线| 亚洲精品国产一区二区精华液| 久久久91精品国产一区二区精品| 综合欧美一区二区三区| 精品一区二区在线观看| 色8久久精品久久久久久蜜| 久久综合九色综合久久久精品综合| 亚洲欧美日韩国产综合| 国产aⅴ精品一区二区三区色成熟| 欧美日韩情趣电影| 青娱乐精品视频| 天堂精品中文字幕在线| 9色porny自拍视频一区二区| 日韩一级二级三级精品视频| 亚洲精品美国一| av爱爱亚洲一区| 国产三区在线成人av| 美女视频黄 久久| 在线播放中文一区| 亚洲一区影音先锋| 色屁屁一区二区| 亚洲精品乱码久久久久久久久| 国产xxx精品视频大全| 欧美精品一区二区三区蜜桃| 麻豆国产精品一区二区三区| 欧美另类久久久品| 无吗不卡中文字幕| 欧美性大战久久久| 婷婷六月综合网| 欧美日韩免费不卡视频一区二区三区| 亚洲毛片av在线| 欧美精品在线一区二区三区| 怡红院av一区二区三区| 成人黄色在线视频| 国产精品久久久久一区 | 日韩一区二区三区免费看 | 国产精品你懂的在线欣赏| 国产乱国产乱300精品| 久久久91精品国产一区二区精品| 精品一区二区三区免费播放| 久久综合九色综合97婷婷女人| 韩国女主播成人在线| 国产亚洲成av人在线观看导航| 国产一区二区免费在线| 国产欧美在线观看一区| 国产在线精品一区二区夜色| 国产精品福利影院| 99精品国产一区二区三区不卡| 国产精品久久久久久久午夜片 | 亚洲国产精品av| 91在线精品秘密一区二区| 一区二区高清在线| 日韩一区和二区| 国产激情视频一区二区三区欧美| 国产精品久久久久四虎| 麻豆91免费看| 天天色 色综合| 91精品国产高清一区二区三区蜜臀 | 成人性生交大片免费看视频在线 | 欧美大尺度电影在线| 国产一区 二区 三区一级| 国产精品久久久99| 91官网在线观看| 精品影视av免费| 一区二区日韩av| 久久久久高清精品| 欧美日韩一级大片网址| 国产高清精品在线| 亚洲国产精品尤物yw在线观看| 精品久久久久一区| 色综合av在线| 国产成人精品亚洲777人妖| 一区二区三区中文字幕| 久久丝袜美腿综合| 欧美人与z0zoxxxx视频| 国产成人精品亚洲777人妖| 亚洲h精品动漫在线观看| 国产精品欧美极品| 欧美一二三在线| 在线视频欧美精品| 成人午夜免费av| 另类小说一区二区三区| 亚洲精品网站在线观看| 久久婷婷一区二区三区| 欧美日韩亚洲综合| 99久久国产综合色|国产精品| 日韩不卡一二三区| 一区二区三区成人在线视频| 国产亚洲欧美激情| 欧美zozozo| 在线成人午夜影院| 在线观看欧美精品| caoporn国产精品| 国产精品亚洲午夜一区二区三区 | 日韩视频一区二区三区| 91毛片在线观看| 成人av在线一区二区三区| 精品无码三级在线观看视频| 日韩影院免费视频| 污片在线观看一区二区| 一区二区三区免费在线观看| 亚洲国产精品99久久久久久久久| 26uuu精品一区二区| 日韩欧美一区在线观看| 欧美乱妇15p| 91精品国产综合久久香蕉的特点 | 国产精品99久| 久久精品久久精品| 青青草97国产精品免费观看 | 国产91在线观看| 国产一区二区在线影院| 久久69国产一区二区蜜臀| 日本不卡视频在线| 狠狠色伊人亚洲综合成人| 麻豆91精品91久久久的内涵| 蜜桃视频一区二区三区| 老色鬼精品视频在线观看播放| 日韩av电影免费观看高清完整版在线观看 | 日韩主播视频在线| 日韩avvvv在线播放| 日本sm残虐另类| 久久er99热精品一区二区| 久久99精品国产麻豆不卡| 精品系列免费在线观看| 国产福利91精品一区二区三区| 国产乱码精品一区二区三区忘忧草| 韩国女主播成人在线| 丁香网亚洲国际| 色综合天天综合在线视频| 欧美色爱综合网| 日韩网站在线看片你懂的| 久久午夜老司机| 中文字幕在线播放不卡一区| 亚洲美女一区二区三区| 天天色综合天天| 国产老肥熟一区二区三区| 不卡视频在线观看| 欧美体内she精高潮| 日韩一本二本av| 国产欧美一区二区精品秋霞影院| 亚洲欧洲无码一区二区三区| 一区二区三区精品视频| 久久精品国产99国产| 国产91精品免费| 欧美色倩网站大全免费| 日韩精品一区二区在线| 中文字幕亚洲一区二区av在线| 亚洲一区二区三区四区五区黄 | 色噜噜狠狠成人网p站| 欧美一级高清大全免费观看| 国产欧美综合色| 午夜精品一区二区三区三上悠亚| 久久9热精品视频| 91日韩在线专区| 精品国产乱码久久久久久浪潮| 中文字幕亚洲一区二区va在线| 男男视频亚洲欧美| 99在线热播精品免费| 91麻豆精品国产91久久久更新时间 | 久久午夜国产精品| 亚洲国产乱码最新视频| 成人午夜激情在线| 在线播放日韩导航| 1024成人网色www| 久久精品理论片| 69久久99精品久久久久婷婷| 国产精品传媒视频| 精品一区二区免费视频| 精品污污网站免费看| 国产精品福利一区二区三区| 美女视频第一区二区三区免费观看网站| 不卡视频免费播放| 久久综合999| 美女视频黄 久久| 欧美日韩日日夜夜| 一区二区三区四区五区视频在线观看| 国内精品久久久久影院色| 制服.丝袜.亚洲.另类.中文 | 在线免费不卡电影| 日本一区二区三级电影在线观看 | 久久精品国产第一区二区三区| 欧美综合视频在线观看| 国产精品国产三级国产aⅴ中文| 奇米精品一区二区三区在线观看一 | 亚洲国产成人av网| 色就色 综合激情| 成人欧美一区二区三区黑人麻豆 | 亚洲成人精品在线观看| 91美女福利视频| 亚洲精品中文在线影院| a美女胸又www黄视频久久| 国产欧美日韩综合| 国产xxx精品视频大全| 久久久久久综合| 国产一区二三区好的| 久久久久国产精品麻豆ai换脸 | 国产一区二区视频在线| 精品久久久久久久久久久久久久久| 日韩中文字幕一区二区三区| 91精品国产综合久久精品麻豆|