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

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

?? desktop-lite.c

?? ARM9-2410教學實驗系統(tǒng)下Linux下minigui程序
?? C
字號:
/*** $Id: desktop-lite.c,v 1.48 2003/11/21 02:45:53 weiym Exp $**** desktop-lite.c: The desktop for MiniGUI-Lite**** Copyright (C) 2003 Feynman Software.** Copyright (C) 1999 ~ 2000 Wei Yongming.**** Current maintainer: Wei Yongming.**** Create date: 1999/04/19*//*** This program is free software; you can redistribute it and/or modify** it under the terms of the GNU General Public License as published by** the Free Software Foundation; either version 2 of the License, or** (at your option) any later version.**** This program is distributed in the hope that it will be useful,** but WITHOUT ANY WARRANTY; without even the implied warranty of** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the** GNU General Public License for more details.**** You should have received a copy of the GNU General Public License** along with this program; if not, write to the Free Software** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA*//*** TODO:*/#include <stdio.h>#include <stdlib.h>#include <string.h>#include <sys/termios.h>#include "common.h"#include "minigui.h"#include "gdi.h"#include "window.h"#include "cliprect.h"#include "gal.h"#include "internals.h"#include "ctrlclass.h"#include "menu.h"#include "timer.h"#include "dc.h"#include "icon.h"#include "sharedres.h"#include "misc.h"#ifndef _STAND_ALONE  #include "ourhdr.h"  #include "client.h"  #include "server.h"#endif/******************************* global data *********************************/RECT g_rcScr;HWND __mg_capture_wnd;HWND __mg_ime_wnd;MSGQUEUE __mg_dsk_msgs;PMAINWIN __mg_active_mainwnd;PTRACKMENUINFO __mg_ptmi;BOOL __mg_switch_away; // always be zero for clients.#ifndef _STAND_ALONEGHANDLE __mg_layer;RECT g_rcDesktop;RECT g_rcExcluded;#endif/********************* Window management support *****************************/static BLOCKHEAP sg_FreeInvRectList;static BLOCKHEAP sg_FreeClipRectList;static ZORDERINFO sg_MainWinZOrder;static ZORDERINFO sg_TopMostWinZOrder;static HWND sg_hCaretWnd;static UINT sg_uCaretBTime;static GCRINFO sg_ScrGCRInfo;#ifndef _STAND_ALONEGHANDLE GUIAPI GetLayerInfo (const char* layer_name, RECT* max_rect,                                int* nr_clients, BOOL* is_topmost, int* cli_active){    if (layer_name) {        LAYERINFO info;        if (mgIsServer) {            if (layer_name [0] == '\0') return INV_LAYER_HANDLE;            get_layer_info (0, layer_name, &info);        }        else {            REQUEST req;            req.id = REQID_LAYERINFO;            req.data = layer_name;            req.len_data = strlen (layer_name) + 1;            if (cli_request (&req, &info, sizeof (LAYERINFO)) < 0)                goto ret;        }        if (info.handle) {            if (max_rect) *max_rect = info.max_rect;            if (nr_clients) *nr_clients = info.nr_clients;            if (is_topmost) *is_topmost = info.is_topmost;            if (cli_active) *cli_active = info.cli_active;        }        return info.handle;    }ret:    return INV_LAYER_HANDLE;}BOOL GUIAPI BringLayer2Topmost (GHANDLE handle){    BOOL ret = FALSE;    if (handle != INV_LAYER_HANDLE) {        if (mgIsServer) {            MG_Layer* layer = (MG_Layer*) handle;            if (is_valid_layer (layer) && layer->cli_head) {                SetTopMostLayer (layer);                ret = TRUE;            }        }        else {            REQUEST req;            req.id = REQID_TOPMOSTLAYER;            req.data = &handle;            req.len_data = sizeof (GHANDLE);            if (cli_request (&req, &ret, sizeof (BOOL)) < 0)                ret = FALSE;        }    }    return ret;}BOOL GUIAPI SetActiveClient (int active){    BOOL ret = FALSE;    if (mgIsServer) {        if (active >= 0 && active < mgClientSize && mgClients [active].fd != -1) {            set_active_client (mgClients + active);            ret = TRUE;        }    }    else {        REQUEST req;        req.id = REQID_ACTIVECLIENT;        req.data = &active;        req.len_data = sizeof (int);        if (cli_request (&req, &ret, sizeof (BOOL)) < 0)            ret = FALSE;    }    return ret;} GHANDLE GUIAPI JoinLayer (const char* layer_name, const char* client_name,                int lx, int ty, int rx, int by){    GHANDLE layer_handle = INV_LAYER_HANDLE;    g_rcDesktop.left = lx;    g_rcDesktop.top = ty;    g_rcDesktop.right = rx;    g_rcDesktop.bottom = by;    NormalizeRect (&g_rcDesktop);    IntersectRect (&g_rcDesktop, &g_rcDesktop, &g_rcScr);    if (mgIsServer) { // will ignore layer_name and app_name        RECT rcSub [4];        int i, n, maxrc = -1, area, maxarea = 0;        g_rcExcluded = g_rcDesktop;        g_rcDesktop = g_rcScr;        n = SubtractRect (rcSub, &g_rcScr, &g_rcExcluded);        // find max rect        for (i = 0; i < n; i ++) {            area = (RECTW (rcSub[i]) * RECTH (rcSub[i]));            if (area > maxarea) {                maxarea = area;                maxrc = i;            }        }        if (maxrc < 0)            return 0;        *SHAREDRES_LAYER_RC = *SHAREDRES_CLI_SCR_RC = rcSub[maxrc];        SetCursor (GetSystemCursor (IDC_ARROW));        SetCursorPos (g_rcScr.right >> 1, g_rcScr.bottom >> 1);        SHAREDRES_TOPMOST_LAYER = __mg_layer = 0;        layer_handle = 1;    }    else {        REQUEST req;        JOINLAYERINFO info;        JOINEDCLIENTINFO joined_info;        if (layer_name) {            strncpy (info.layer_name, layer_name, LEN_LAYER_NAME);            info.layer_name [LEN_LAYER_NAME] = '\0';        }        else            info.layer_name [0] = '\0';        if (client_name) {            strncpy (info.client_name, client_name, LEN_CLIENT_NAME);            info.client_name [LEN_CLIENT_NAME] = '\0';        }        else            info.client_name [0] = '\0';        info.desktop_rc = g_rcDesktop;        req.id = REQID_JOINLAYER;        req.data = &info;        req.len_data = sizeof (JOINLAYERINFO);        if (cli_request (&req, &joined_info, sizeof (JOINEDCLIENTINFO)) < 0)            goto ret;        if (IsRectEmpty (&joined_info.desktop_rc)) {            fprintf (stderr, "JoinLayer: Empty desktop rect.\n");            goto ret;        }        layer_handle = joined_info.layer_handle;        g_rcDesktop = joined_info.desktop_rc;        g_rcExcluded = g_rcDesktop;        SelectClipRect (HDC_SCREEN, &g_rcExcluded);        __mg_layer = layer_handle;    }    InitClipRgn (&sg_ScrGCRInfo.crgn, &sg_FreeClipRectList);    SetClipRgn (&sg_ScrGCRInfo.crgn, &g_rcDesktop);    sg_ScrGCRInfo.age = 0;    SendMessage (HWND_DESKTOP, MSG_STARTSESSION, 0, 0);    SendMessage (HWND_DESKTOP, MSG_ERASEDESKTOP, 0, 0);ret:    return layer_handle;}#endif /* !STAND_ALONE */static BOOL InitWndManagementInfo (void){#ifndef _INCORE_RES    if (!InitMainWinMetrics())        return FALSE;#endif    __mg_capture_wnd = HWND_DESKTOP;    __mg_active_mainwnd = NULL;    __mg_ptmi = NULL;    __mg_ime_wnd = HWND_DESKTOP;    sg_hCaretWnd = HWND_DESKTOP;    return TRUE;}#ifdef _STAND_ALONE//#include "sysres.c"#elsePBITMAP SystemBitmap [SYSBMP_ITEM_NUMBER];HICON  LargeSystemIcon [SYSICO_ITEM_NUMBER];HICON  SmallSystemIcon [SYSICO_ITEM_NUMBER];static void init_system_bitmap (int id){    int i;    void *temp;	int bpp;    bpp = BYTESPERPHYPIXEL;    temp   = mgSharedRes + ((PG_RES)mgSharedRes)->bmpoffset;    if (id < ((PG_RES)mgSharedRes)->bmpnum) {        if (!(SystemBitmap [id] = (PBITMAP) malloc (sizeof (BITMAP))))            return;        for (i = 0; i < id; i++)		    temp += sizeof(BITMAP) + ((PBITMAP)temp)->bmPitch * ((PBITMAP)temp)->bmHeight;		SystemBitmap[id]->bmWidth  = ((PBITMAP)temp)->bmWidth;		SystemBitmap[id]->bmHeight = ((PBITMAP)temp)->bmHeight;		SystemBitmap[id]->bmType = BMP_TYPE_NORMAL;		SystemBitmap[id]->bmBitsPerPixel = bpp << 3;		SystemBitmap[id]->bmBytesPerPixel = bpp;		SystemBitmap[id]->bmPitch  = ((PBITMAP)temp)->bmPitch;		SystemBitmap[id]->bmColorKey = ((PBITMAP)temp)->bmColorKey;		SystemBitmap[id]->bmBits = temp + sizeof(BITMAP);    }}PBITMAP GUIAPI GetSystemBitmap (int id){    if (id >= SYSBMP_ITEM_NUMBER || id < 0)        return NULL;    if (SystemBitmap [id] == NULL)        init_system_bitmap (id);    return SystemBitmap [id];}static void init_large_system_icon (int id){    void *temp;	int bpp;    bpp = BYTESPERPHYPIXEL;	temp = mgSharedRes + ((PG_RES)mgSharedRes)->iconoffset;    if (id < ((PG_RES)mgSharedRes)->iconnum) {        if (!(LargeSystemIcon[id] = (HICON)malloc (sizeof(ICON))))            return;		temp += (sizeof(ICON) * 2 + (2*32*32 + 2*16*16)*bpp) * id;        ((PICON)LargeSystemIcon[id])->width   = ((PICON)temp)->width;        ((PICON)LargeSystemIcon[id])->height  = ((PICON)temp)->height;#ifdef _USE_NEWGAL        ((PICON)LargeSystemIcon[id])->pitch   = ((PICON)temp)->pitch;#endif        ((PICON)LargeSystemIcon[id])->AndBits = temp + sizeof(ICON);        ((PICON)LargeSystemIcon[id])->XorBits = temp + sizeof(ICON) + bpp*32*32;    }}static void init_small_system_icon (int id){    void *temp;	int bpp;    bpp = BYTESPERPHYPIXEL;	temp = mgSharedRes + ((PG_RES)mgSharedRes)->iconoffset;    if (id < ((PG_RES)mgSharedRes)->iconnum) {        if (!(SmallSystemIcon[id] = (HICON)malloc (sizeof(ICON))))            return;		temp += (sizeof(ICON)*2 + (2*32*32 + 2*16*16)*bpp) * id;		temp += sizeof(ICON) + 2*bpp*32*32;        ((PICON)SmallSystemIcon[id])->width   = ((PICON)temp)->width;        ((PICON)SmallSystemIcon[id])->height  = ((PICON)temp)->height;#ifdef _USE_NEWGAL        ((PICON)SmallSystemIcon[id])->pitch   = ((PICON)temp)->pitch;#endif        ((PICON)SmallSystemIcon[id])->AndBits = temp + sizeof(ICON);        ((PICON)SmallSystemIcon[id])->XorBits = temp + sizeof(ICON) + bpp*16*16;    }}HICON GUIAPI GetLargeSystemIcon (int id){    if (id >= SYSICO_ITEM_NUMBER || id < 0)        return 0;    if (LargeSystemIcon [id] == 0)        init_large_system_icon (id);    return LargeSystemIcon [id];}HICON GUIAPI GetSmallSystemIcon (int id){    if (id >= SYSICO_ITEM_NUMBER || id < 0)        return 0;    if (SmallSystemIcon [id] == 0)        init_small_system_icon (id);    return SmallSystemIcon [id];}static void TerminateSharedSysRes (void){    int i;        for (i=0; i<SYSBMP_ITEM_NUMBER; i++) {        if (SystemBitmap [i]) {            free (SystemBitmap [i]);        }    }    for (i=0; i<SYSICO_ITEM_NUMBER; i++) {        if (SmallSystemIcon [i])            free ((PICON)SmallSystemIcon[i]);        if (LargeSystemIcon [i])            free ((PICON)LargeSystemIcon[i]);    }}#endif /* !_STAND_ALONE */static void InitZOrderInfo (PZORDERINFO pZOrderInfo, HWND hHost);BOOL InitDesktop (void){    /*     * Init ZOrderInfo here.     */    InitZOrderInfo (&sg_MainWinZOrder, HWND_DESKTOP);    InitZOrderInfo (&sg_TopMostWinZOrder, HWND_DESKTOP);        /*     * Init heap of clipping rects.     */    InitFreeClipRectList (&sg_FreeClipRectList, SIZE_CLIPRECTHEAP);    /*     * Init heap of invalid rects.     */    InitFreeClipRectList (&sg_FreeInvRectList, SIZE_INVRECTHEAP);    // Init Window Management information.    if (!InitWndManagementInfo ())        return FALSE;#ifdef _STAND_ALONE    /*     * Load system resource here.     */    if (!InitSystemRes ()) {        fprintf (stderr, "DESKTOP: Can not initialize system resource!\n");        return FALSE;    }    InitClipRgn (&sg_ScrGCRInfo.crgn, &sg_FreeClipRectList);    SetClipRgn (&sg_ScrGCRInfo.crgn, &g_rcScr);    sg_ScrGCRInfo.age = 0;    SendMessage (HWND_DESKTOP, MSG_STARTSESSION, 0, 0);    SendMessage (HWND_DESKTOP, MSG_ERASEDESKTOP, 0, 0);#endif    return TRUE;}#include "desktop-comm.c"

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
五月婷婷欧美视频| 欧美日韩中字一区| 欧美三级电影在线看| 久久综合九色欧美综合狠狠| 综合激情成人伊人| 国产美女精品人人做人人爽| 欧美性色黄大片| 国产精品美女一区二区三区| 日韩高清一级片| 欧美在线视频不卡| 亚洲欧洲日产国码二区| 久久91精品国产91久久小草| 欧美最新大片在线看| 国产精品丝袜在线| 精彩视频一区二区| 91精品国产欧美一区二区| 综合网在线视频| 成人小视频在线| 久久精品人人做人人爽97| 男女男精品网站| 欧美午夜精品久久久久久超碰| 国产精品三级久久久久三级| 国产一区二区三区在线看麻豆| 91精品国产色综合久久不卡电影| 一区二区三区蜜桃| 99视频在线观看一区三区| 亚洲国产精品精华液2区45| 久久不见久久见中文字幕免费| 欧美日韩高清一区二区| 亚洲一区二区三区影院| 99精品视频在线播放观看| 国产精品理论片在线观看| 成人妖精视频yjsp地址| 国产日韩一级二级三级| 国产大陆a不卡| 国产亚洲精品aa午夜观看| 国产一区二区三区在线观看精品| 精品国产伦理网| 高清不卡一区二区在线| 国产欧美一区二区三区鸳鸯浴| 国产精品99久久久久久宅男| 国产精品伦一区| 91网站黄www| 亚洲影视在线播放| 91精品国产入口| 激情亚洲综合在线| 国产精品你懂的在线欣赏| av午夜一区麻豆| 亚洲国产wwwccc36天堂| 91精品欧美久久久久久动漫 | 精品视频在线免费观看| 偷窥国产亚洲免费视频| 日韩一区二区电影网| 国产一区日韩二区欧美三区| 国产精品人人做人人爽人人添| 91同城在线观看| 亚洲成人在线观看视频| 精品日韩99亚洲| 波多野结衣中文字幕一区二区三区 | 久久精品一级爱片| 91在线精品一区二区| 亚欧色一区w666天堂| 久久女同精品一区二区| a美女胸又www黄视频久久| 亚洲电影在线播放| 2017欧美狠狠色| 色综合色综合色综合| 蜜桃视频一区二区三区| 国产女人aaa级久久久级 | 亚洲一区二区三区四区的| 欧美一区二区视频观看视频 | 美女性感视频久久| 国产精品狼人久久影院观看方式| 欧美日韩在线不卡| 风流少妇一区二区| 日韩精品三区四区| 亚洲素人一区二区| 欧美va亚洲va在线观看蝴蝶网| 99久久免费视频.com| 久久99精品久久久久久久久久久久| 国产精品国产馆在线真实露脸| 欧美人体做爰大胆视频| 99热99精品| 国产在线精品一区二区夜色| 亚洲综合丝袜美腿| 国产精品日日摸夜夜摸av| 91麻豆精品91久久久久同性| 色综合久久久久综合| 国产一区二区在线观看视频| 午夜精品国产更新| 亚洲婷婷国产精品电影人久久| 欧美一级精品大片| 欧洲精品视频在线观看| av不卡一区二区三区| 久久精品二区亚洲w码| 亚洲精品一二三四区| 国产精品网友自拍| 久久久亚洲精品石原莉奈| 欧美欧美午夜aⅴ在线观看| 色综合久久99| 91免费视频网址| 97久久精品人人做人人爽| 福利一区二区在线| 国产精品 欧美精品| 日产欧产美韩系列久久99| 亚洲乱码国产乱码精品精98午夜| 国产人成一区二区三区影院| 欧美xxxx老人做受| 精品久久久久久无| 精品少妇一区二区三区视频免付费| 欧美绝品在线观看成人午夜影视| 欧洲亚洲国产日韩| 欧美在线观看一区| 欧美午夜电影在线播放| 欧美中文一区二区三区| 欧美在线免费视屏| 在线不卡免费欧美| 欧美一级欧美三级| 2022国产精品视频| 欧美激情一区二区| 国产精品传媒入口麻豆| 中文字幕一区二区三区精华液| 国产精品国产三级国产三级人妇| 国产精品美日韩| 亚洲免费av在线| 亚洲国产精品久久久久秋霞影院| 天天免费综合色| 免费人成精品欧美精品| 激情五月激情综合网| 国产精品996| 99在线精品视频| 欧美日韩免费一区二区三区视频 | 夜夜爽夜夜爽精品视频| 天天av天天翘天天综合网色鬼国产 | 蜜臀久久久久久久| 国产一区二区三区四| 成人综合在线视频| 一本大道av一区二区在线播放 | 洋洋成人永久网站入口| 天天操天天色综合| 国产成人h网站| 欧美性色黄大片| 26uuu国产电影一区二区| 国产精品午夜电影| 性久久久久久久久久久久| 久久er99精品| 97久久精品人人做人人爽50路| 欧美日韩大陆一区二区| 2021国产精品久久精品| 亚洲精品乱码久久久久久久久 | 日韩精品一区二区三区在线观看 | 成人激情电影免费在线观看| 欧美视频中文一区二区三区在线观看| 8x8x8国产精品| 国产精品午夜在线观看| 天天操天天色综合| 成人高清av在线| 制服丝袜亚洲网站| 亚洲视频一二三| 国产老女人精品毛片久久| 欧美亚洲一区二区在线观看| 欧美一级免费大片| 最近日韩中文字幕| 蜜乳av一区二区| 欧美性大战久久| 久久精品人人爽人人爽| 日韩中文字幕区一区有砖一区| 成人网在线免费视频| 日韩三区在线观看| 一区二区三区国产精华| 国产精品18久久久久| 7777精品伊人久久久大香线蕉超级流畅| 亚洲国产高清在线| 国产中文字幕一区| 6080午夜不卡| 亚洲bdsm女犯bdsm网站| 91免费在线看| 国产精品不卡在线观看| 国产一区二区三区久久久 | 日韩三级中文字幕| 亚洲综合在线视频| 成人黄色a**站在线观看| 精品精品国产高清一毛片一天堂| 亚洲v日本v欧美v久久精品| 不卡一区中文字幕| 国产目拍亚洲精品99久久精品 | 日本少妇一区二区| 91福利精品第一导航| 国产精品久久久久精k8| 国产一区二区在线视频| 日韩精品一区二| 捆绑调教一区二区三区| 日韩一级二级三级| 日本免费新一区视频| 91精品久久久久久久91蜜桃| 五月天亚洲精品| 欧美日韩aaa| 日韩国产一二三区| 欧美一区二区啪啪| 日韩av电影免费观看高清完整版 |