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

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

?? window.c

?? rtCell 實時微內核-具有下列功能: 1. 完全搶占的實時微內核結構
?? C
?? 第 1 頁 / 共 3 頁
字號:
/*
 *******************************************************************************
 *                      The real-time kernel "rtCell"                          *
 *              Copyright 2005 taowentao, allrights reserved.                  *
 * File : Window.c                                                             *
 * By   : taowentao     2006-09-02  2007-05-20                                 *
 *******************************************************************************
 */

#if !defined(WINDOW_H)
#include "giCell\Wins\include\Window.h"
#endif  

/*
 *******************************************************************************
 *                                                                             *
 *******************************************************************************
 */

#define PAGE             (16) 
#define ACTIVE_BAR_CLR   (WindowBarColor[0])
#define INACTIVE_BAR_CLR (WindowBarColor[1])
#define ACTIVE_CLR       (0)
#define INACTIVE_CLR     (1)
#define WIN_BORDER       (2)
#define BAR_XOFF         (4)
#define BAR_YOFF         (4)

#define BAR_HEIGHT       (18)
#define VIEWSYS_XOFF     (BAR_XOFF + 3)
#define VIEWSYS_YOFF     (BAR_YOFF + 1)
#define CAPTION_XOFF     (BAR_XOFF + 22)
#define CAPTION_YOFF     (BAR_YOFF + 1)     
#define SYSBTN_WIDTH     (16)
#define SYSBTN_HEIGHT    (14)
#define BTN_DOWN         (0)
#define BTN_UP           (-1)

#define CLIENT_XOFF      (BAR_XOFF + 2)
#define CLIENT_YOFF      (BAR_YOFF + BAR_HEIGHT + 1)
#define WIN_MAX_XSIZE    (GetWidth()+(BAR_XOFF<<1))
#define WIN_MAX_YSIZE    (GetHeight()+(BAR_YOFF<<1))

#define SYSBTN_YOFF      (6)
#define SYSBTN_XOFF      (2) 

static const COLOR WindowBarColor[2] = {GD_LIGHTBLUE, GD_DARKGRAY};
static const COLOR ClientColor = GD_GRAY;
static const COLOR CaptionColor = GD_WHITE;
static const COLOR MouseEnterColor = GD_LIGHTRED;

static const BYTE  sysMin[4] = {0x07, 0xE0, 0x07, 0xE0};
static const BYTE  sysMax[18] = {0x0F, 0xF8, 0x0F, 0xF8, 0x08, 0x08,
                                 0x08, 0x08, 0x08, 0x08, 0x08, 0x08,
                                 0x08, 0x08, 0x08, 0x08, 0x0F, 0xF8
                                };
static const BYTE  sysNormal[18] = {0x03, 0xF0, 0x03, 0xF0, 0x02, 0x10,
                                    0x0F, 0xD0, 0x0F, 0xD0, 0x08, 0x70,
                                    0x08, 0x40, 0x08, 0x40, 0x0F, 0xC0
                                   };
static const BYTE  sysClose[14] = {0x06, 0x18, 0x03, 0x30, 0x01, 0xE0, 0x00,
                                   0xC0, 0x01, 0xE0, 0x03, 0x30, 0x06, 0x18
                                  };

static const BYTE  viewSYS[28] = {0xFF, 0x1F, 0x3C, 0x06, 0x1C, 0x04, 0x1C,
                                  0x0C, 0x0E, 0x08, 0x0E, 0x18, 0x07, 0x10,
                                  0x07, 0x30, 0x03, 0xA0, 0x03, 0xE0, 0x01,
                                  0xC0, 0x01, 0xC0, 0x00, 0x80, 0x00, 0x80
                                 };

/*
 *******************************************************************************
 *                                                                             *
 *******************************************************************************
 */

static void SysBtnViewPaint(VIEW *pView)
{
    SYSBTN* pBtn;
    WINDOW* pWin;
    int     Off;
    COLOR   clr;
    RECT    r;

    pBtn = OBJ_FROM_VIEW(pView);
    pWin = OBJ_FROM_VIEW(pView->pParent);
    r = pView->viewRect;
    FillRect(&r, pBtn->BottonColor);
    
    if ((pBtn->Status & SYSBTN_MOUSE_CATCH) &&
        (pBtn->Status & SYSBTN_MOUSE_ENTER)) {
        DrawDownBotton(&r);
        Off = BTN_DOWN;
    } else {
        DrawUpBotton(&r);
        Off = BTN_UP;
    }

    if (pBtn->Status & SYSBTN_MOUSE_ENTER) clr = MouseEnterColor;
    else clr = GD_BLACK;

    if (pBtn->Status & SYSBTN_MIN_BTN) {
        if (pWin->Status & WIN_MIN_SIZE)
            DrawMatrix(r.left+Off, r.top+Off+3, 16, 9, sysNormal, clr);
        else
            DrawMatrix(r.left+Off, r.top+Off+10, 16, 2, sysMin, clr);
    } else if (pBtn->Status & SYSBTN_MAX_BTN) {
        if (pWin->Status & WIN_MAX_SIZE)
            DrawMatrix(r.left+Off, r.top+Off+3, 16, 9, sysNormal, clr);
        else
            DrawMatrix(r.left+Off, r.top+Off+1+2, 16, 9, sysMax, clr);
    } else if (pBtn->Status & SYSBTN_CLOSE_BTN) {
        DrawMatrix(r.left+Off, r.top+Off+1+3, 16, 7, sysClose, clr);
    }
}

static void ResizeWindow(WINDOW* pWin, const int dx, const int dy);
void SetWindow(WINDOW* pWin, int left, int top, int xSize, int ySize);
static void SetWindowSize(WINDOW* pWin, const int xs, const int ys);
static void SetWinScrollBar(WINDOW* pWin);
static void MoveWindow(WINDOW* pWin, const int dx, const int dy);

static CBOOL _cdecl_ SysBtnViewProc(VMSG *pMsg)
{  
    SYSBTN *pBtn = OBJ_FROM_VIEW(pMsg->pView);
    WINDOW *pWin = OBJ_FROM_VIEW(pMsg->pView->pParent);
    int x, y;
    
    switch (pMsg->MsgID) {
    case VMSG_PAINT:
        SysBtnViewPaint(pMsg->pView);
        return (true);
    case TIMERM_OUT:
    case KEYM_KEY_DOWN:
        InformView(pWin->pMainView, pMsg);
        return (true);
    case VMSG_GETFOCUS:
        pBtn->Status |= (SYSBTN_FOCUSSED);
        UpdateView(pMsg->pView);
        return (true);
    case VMSG_LOSTFOCUS:
        pBtn->Status &= ~(SYSBTN_FOCUSSED|SYSBTN_MOUSE_CATCH);
        UpdateView(pMsg->pView);
        return (true);
    case MSM_MS_ENTER:  
        SetMouseCursor(ARROW);
        pBtn->Status |= SYSBTN_MOUSE_ENTER;
        UpdateView(pMsg->pView);
        return (true);
    case MSM_MS_LEAVE:
        pBtn->Status &= ~(SYSBTN_MOUSE_ENTER);
        UpdateView(pMsg->pView);
        return (true);
    case MSM_LB_DOWN:
        if (pBtn->Status & SYSBTN_FOCUSSED) {
            pBtn->Status |= (SYSBTN_MOUSE_CATCH|SYSBTN_MOUSE_ENTER);
            UpdateView(pMsg->pView);
        }
        return (true);
    case MSM_LB_UP:
        if ((pBtn->Status & SYSBTN_MOUSE_CATCH) == 0) return (true);
        pBtn->Status &= ~(SYSBTN_MOUSE_CATCH);
        if ((pBtn->Status & SYSBTN_FOCUSSED) &&
            (pBtn->Status & SYSBTN_MOUSE_ENTER)) {
            pBtn->Status &= ~(SYSBTN_MOUSE_ENTER);           
            if (pBtn->Status & SYSBTN_CLOSE_BTN) { /* close botton */
                HideView(pWin->pMainView);
                return (true);  
            } else if (pBtn->Status & SYSBTN_MIN_BTN) {/* min botton */
                if (pWin->Status & WIN_MIN_SIZE) {
                    pWin->Status &= ~WIN_MIN_SIZE;
                    goto _set_normal_size_win;
                } else {
                    if (pWin->Status & WIN_MAX_SIZE)
                        pWin->Status &= ~WIN_MAX_SIZE;
                    pWin->Status |= WIN_MIN_SIZE;
                    x = pWin->pMainView->viewRect.left;
                    y = pWin->pMainView->viewRect.top;
                    if (x < 0) x = 0;
                    if (y < 0) y = 0;
                    SetWindow(pWin, x, y, FORM_MIN_XSIZE, FORM_MIN_YSIZE);
                }
            } else if (pBtn->Status & SYSBTN_MAX_BTN) { /* max botton */
                if (pWin->Status & WIN_MAX_SIZE) {
                    pWin->Status &= ~WIN_MAX_SIZE;
_set_normal_size_win:
                    SetWindow(pWin, pWin->WinRect.left, pWin->WinRect.top,
                              GetRectXSize(&(pWin->WinRect)),
                              GetRectYSize(&(pWin->WinRect))); 
                } else {
                    if (pWin->Status & WIN_MIN_SIZE)
                        pWin->Status &= ~WIN_MIN_SIZE;
                    pWin->Status |= WIN_MAX_SIZE;
                    SetWindow(pWin, -BAR_XOFF, -BAR_YOFF, WIN_MAX_XSIZE, WIN_MAX_YSIZE);
                }
            }
        } 
        return (true);  
    default:
        return (false);
    }
}

static SYSBTN* CreateSysBtn(int left, int top, int width, int height, VIEW* pParent)
{
    VIEW   *pView;
    SYSBTN *pBtn;

    if (pParent == NULL) 
        return (NULL);

    pView = CreateControl(left, top, width, height, pParent, VS_MOVABLE,
                          SysBtnViewProc, sizeof(SYSBTN));
    if (pView == NULL) return (NULL);
    
    pBtn = OBJ_FROM_VIEW(pView);
    pBtn->pView = pView;
    pBtn->BottonColor = ClientColor; 
    pBtn->Status = 0;  
    ShowView(pView);
    return (pBtn);
}

/*
 *******************************************************************************
 *                                                                             *
 *******************************************************************************
 */

static void SetWinScrollBar(WINDOW* pWin); 

static void _cdecl_ OnWinScroll(VIEW *pView, const int Off)
{
    WINDOW *pWin;
    VIEW *pClient;
    SCROLLBAR *pScrollbar = OBJ_FROM_VIEW(pView);

    if (Off == 0) return;
    pWin = OBJ_FROM_VIEW(pView->pParent);
    pClient = pWin->pClientView;
    if (pScrollbar->Align == CTRL_ALIGN_VCENTER)
        MoveAllChildViews(pClient, 0, Off);
    else
        MoveAllChildViews(pClient, Off, 0);
    UpdateView(pWin->pClientView);
} 

static void SetWinScrollBar(WINDOW* pWin)
{ 
    int xSize, ySize;
    CWORD flag = 0;
    RECT save, rect, *r;

    if ((pWin->Styles & WIN_SCROLL) == 0) return;

    save = pWin->pClientView->viewRect;
    r = &(pWin->pClientView->viewRect);
    MergeAllChildViewsRect(pWin->pClientView, &rect);
    
    xSize = GetRectXSize(&rect);
    ySize = GetRectYSize(&rect);
    if (GetRectYSize(r) < ySize) {
        flag |= 1;
        r->right -= BOX_W;
        MergeAllChildViewsRect(pWin->pClientView, &rect);
        xSize = GetRectXSize(&rect);  
    }
    if (GetRectXSize(r) < xSize) {
        flag |= 2;
        r->bottom -= BOX_W;
        MergeAllChildViewsRect(pWin->pClientView, &rect); 
        ySize = GetRectYSize(&rect);
    }
    if (GetRectYSize(r) < ySize) {
        if ((flag & 1) == 0) {
            flag |= 1;
            r->right -= BOX_W;
            MergeAllChildViewsRect(pWin->pClientView, &rect);
            xSize = GetRectXSize(&rect);  
        }
    }     
    if (GetRectXSize(r) < xSize) {
        if ((flag & 2) == 0) {
            flag |= 2;
            r->bottom -= BOX_W;
        }
    }

    pWin->MaxRect = rect;
    rect = (*r);
    pWin->pClientView->viewRect = save;

    if (flag == 3) {
        SetScrolbar(pWin->pVScrolbar, PAGE, &save, &rect, &(pWin->MaxRect), true);
        SetScrolbar(pWin->pHScrolbar, PAGE, &save, &rect, &(pWin->MaxRect), true);
    } else if (flag == 1) {
        SetScrolbar(pWin->pVScrolbar, PAGE, &save, &rect, &(pWin->MaxRect), false);
    } else if (flag == 2) {
        SetScrolbar(pWin->pHScrolbar, PAGE, &save, &rect, &(pWin->MaxRect), false);
    } 

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲一区二区美女| 日韩精品视频网| 亚洲猫色日本管| 亚洲午夜免费福利视频| 精品一区二区影视| 风间由美中文字幕在线看视频国产欧美| 91看片淫黄大片一级在线观看| 欧美一区午夜视频在线观看| 亚洲色图第一区| 国产精品一色哟哟哟| 日韩午夜在线观看| 午夜影视日本亚洲欧洲精品| 不卡的电影网站| 国产亚洲污的网站| 麻豆极品一区二区三区| 欧美日韩一区小说| 国产精品全国免费观看高清| 久久99精品久久久| 日韩欧美一级二级三级久久久| 一区二区三区蜜桃| 91污在线观看| 亚洲欧洲日韩一区二区三区| 国产成人在线视频网站| 欧美美女一区二区在线观看| 亚洲乱码日产精品bd| 成人app网站| 中文成人综合网| 国产·精品毛片| 国产日韩欧美激情| 国产成人精品三级| 国产网红主播福利一区二区| 久草中文综合在线| 久久久不卡网国产精品二区| 国产精品一区二区久激情瑜伽| 欧美精品一区二区久久婷婷| 毛片av中文字幕一区二区| 日韩欧美国产精品| 另类小说欧美激情| 26uuu久久综合| 国内成人精品2018免费看| 欧美精品一区二区三区高清aⅴ| 国产一区在线看| 中文字幕一区二区在线播放| 一本到三区不卡视频| 亚洲欧美日韩久久| 欧美色爱综合网| 蜜桃免费网站一区二区三区| 久久伊人中文字幕| eeuss鲁一区二区三区| 一区二区三区高清| 日韩一级完整毛片| 国产成人av网站| 亚洲午夜在线视频| 日韩亚洲欧美在线| 成人一区二区在线观看| 亚洲老司机在线| 日韩欧美在线123| 成人精品免费看| 亚洲一区二区在线视频| 日韩欧美卡一卡二| 粉嫩久久99精品久久久久久夜| 怡红院av一区二区三区| 日韩精品影音先锋| 99久久精品99国产精品| 热久久久久久久| 国产精品护士白丝一区av| 欧美日韩一区久久| 国产激情精品久久久第一区二区| 亚洲欧美日韩中文播放 | 久久久久成人黄色影片| 91在线小视频| 看片网站欧美日韩| 一区二区在线免费观看| 久久亚洲综合色一区二区三区| 91官网在线免费观看| 国产精品自拍av| 三级精品在线观看| 亚洲欧美综合网| 欧美不卡视频一区| 欧美图片一区二区三区| 国产美女视频一区| 日韩高清在线一区| 一区二区三区电影在线播| 久久久久国产一区二区三区四区 | 亚洲国产一区视频| 国产清纯美女被跳蛋高潮一区二区久久w | 亚洲成人动漫精品| 中文字幕在线一区二区三区| 日韩美女一区二区三区四区| 在线一区二区三区四区| 国产精品99久久久久久有的能看| 爽好多水快深点欧美视频| 中文字幕中文乱码欧美一区二区| 日韩小视频在线观看专区| 91久久精品午夜一区二区| 成人在线综合网站| 久久国产视频网| 一区二区三区美女| 亚洲欧洲日产国码二区| 亚洲精品一区二区三区精华液| 欧美日本不卡视频| 欧美一二三区在线| 欧美丝袜丝交足nylons图片| 波多野结衣亚洲| 国产99久久久精品| 国产成人亚洲综合a∨婷婷| 精品一区二区三区免费| 琪琪一区二区三区| 日韩国产精品久久久久久亚洲| 亚洲图片欧美视频| 一区2区3区在线看| 亚洲黄色在线视频| 亚洲最大色网站| 亚洲一区二区视频在线| 亚洲国产人成综合网站| 亚洲国产精品久久人人爱| 亚洲黄色片在线观看| 亚洲精品免费在线| 亚洲一区二区精品视频| 香蕉av福利精品导航 | 亚洲色图清纯唯美| ...xxx性欧美| 亚洲综合色婷婷| 亚洲va国产天堂va久久en| 日韩国产精品大片| 国内精品久久久久影院色| 国产盗摄精品一区二区三区在线| 国产乱对白刺激视频不卡| 成人在线一区二区三区| 99久久精品免费看国产免费软件| 色偷偷久久一区二区三区| 在线观看日韩高清av| 91精品综合久久久久久| 亚洲精品一区二区三区香蕉| 国产精品国产自产拍高清av| 亚洲一区二区三区不卡国产欧美| 亚洲va欧美va人人爽| 国产一区二区精品久久91| a在线播放不卡| 欧美丰满一区二区免费视频| xf在线a精品一区二区视频网站| 国产精品久99| 欧美a级理论片| 成人免费黄色大片| 欧美美女一区二区| 久久久91精品国产一区二区精品| 亚洲人成网站影音先锋播放| 日韩在线一区二区三区| 国产福利一区二区| 欧美性生活大片视频| 久久亚洲一区二区三区四区| 亚洲猫色日本管| 黑人精品欧美一区二区蜜桃| 色综合久久天天综合网| 欧美一区二区三区的| 中文字幕的久久| 婷婷成人综合网| 不卡在线观看av| 日韩一区二区精品在线观看| 成人免费在线播放视频| 奇米影视在线99精品| 91玉足脚交白嫩脚丫在线播放| 91精品在线观看入口| 国产精品色在线观看| 天天综合网天天综合色| 波多野结衣中文字幕一区二区三区 | 色悠悠亚洲一区二区| 欧美岛国在线观看| 亚洲永久免费视频| 国产aⅴ综合色| 精品三级av在线| 亚洲国产aⅴ成人精品无吗| 丁香亚洲综合激情啪啪综合| 日韩精品中文字幕一区| 亚洲成人在线网站| 91视频xxxx| 国产精品狼人久久影院观看方式| 久久国产精品区| 91精品国产综合久久久久久漫画 | 欧美视频在线观看一区二区| 中文字幕第一页久久| 国产美女av一区二区三区| 欧美一级爆毛片| 婷婷一区二区三区| 欧美另类z0zxhd电影| 一区二区免费在线播放| 91农村精品一区二区在线| 国产亚洲欧洲997久久综合 | 久久一夜天堂av一区二区三区| 午夜久久电影网| 欧美少妇一区二区| 亚洲综合一二三区| 欧美视频中文字幕| 亚洲一区在线观看免费| 在线观看免费一区| 亚洲午夜久久久| 欧美自拍偷拍午夜视频| 亚洲亚洲人成综合网络| 在线精品视频小说1| 五月婷婷久久综合|