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

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

?? desktop-lite.c

?? 使用miniGUI模擬器的簡單開發例子(值得參考)
?? C
字號:
/*** $Id: desktop-lite.c,v 1.49 2003/12/11 05:07:04 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"  #include "drawsemop.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;#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        SetCursor (GetSystemCursor (IDC_ARROW));        SetCursorPos (g_rcScr.right >> 1, g_rcScr.bottom >> 1);        g_rcDesktop = g_rcScr;        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;        SelectClipRect (HDC_SCREEN, &g_rcDesktop);        __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一区二区三区免费野_久草精品视频
偷拍自拍另类欧美| 精品在线观看视频| 国产成人8x视频一区二区| 欧美午夜一区二区| 欧美日韩国产天堂| 亚洲五码中文字幕| 在线免费观看成人短视频| 成人欧美一区二区三区视频网页| 国产成人精品免费视频网站| 中文字幕精品一区 | 久久亚洲欧美国产精品乐播| 日韩电影一区二区三区四区| 色网站国产精品| 无码av免费一区二区三区试看 | 成人在线一区二区三区| 欧美一区二区三区视频| 秋霞午夜鲁丝一区二区老狼| 91精品欧美一区二区三区综合在 | 日韩专区中文字幕一区二区| 欧美女孩性生活视频| 亚洲超碰97人人做人人爱| 欧美日韩一二三区| 91蝌蚪国产九色| 91精品国产欧美一区二区成人| 亚洲成人资源在线| 日韩三级免费观看| 国产在线观看免费一区| 国产日韩欧美不卡| 久久99精品国产麻豆不卡| 久久久久久综合| 国产成人亚洲综合a∨婷婷| 国产精品美女久久久久久| 99久久99久久精品免费看蜜桃| 亚洲码国产岛国毛片在线| 92国产精品观看| 亚洲成人综合在线| 日韩女优视频免费观看| 国产成人午夜视频| 久久精品一区八戒影视| 国产精品麻豆久久久| 国产精品进线69影院| 偷拍日韩校园综合在线| 日本不卡在线视频| 欧美日韩亚洲另类| 国产精品美女久久久久aⅴ国产馆| 首页国产欧美久久| 91在线精品一区二区三区| 欧美va在线播放| 免费在线欧美视频| 日韩视频永久免费| 美女视频一区二区| 日本伦理一区二区| 一区二区三区精品在线| 国产精品12区| 亚洲成av人片www| 欧美日韩精品福利| 黄色精品一二区| 欧美视频在线观看一区| 欧美日韩亚洲综合一区二区三区| 国产日韩精品一区| 成人黄色电影在线| 久久精品72免费观看| 免费观看久久久4p| 国产精品麻豆一区二区| 91成人在线免费观看| 国产一区二区三区精品视频| 婷婷成人激情在线网| 亚洲伦在线观看| 国产精品国产自产拍在线| 欧美精品一区男女天堂| 日韩欧美成人激情| 欧美浪妇xxxx高跟鞋交| 欧美色老头old∨ideo| 91久久精品午夜一区二区| 成人动漫中文字幕| 国产综合色精品一区二区三区| 日本不卡一区二区| 欧美aaaaa成人免费观看视频| 亚洲最大成人网4388xx| 洋洋成人永久网站入口| 国产人久久人人人人爽| 国产视频一区在线播放| 精品盗摄一区二区三区| 久久嫩草精品久久久精品| 精品三级在线观看| 精品国产免费久久| 久久美女艺术照精彩视频福利播放| 欧美大片日本大片免费观看| 日韩欧美国产一区二区三区| 欧美成人精品福利| 久久免费的精品国产v∧| 久久蜜桃av一区二区天堂| 久久老女人爱爱| 国产蜜臀97一区二区三区 | 91在线porny国产在线看| 成人短视频下载| 91色婷婷久久久久合中文| 91精品1区2区| 69久久99精品久久久久婷婷| 精品国精品国产| 国产亚洲综合色| 亚洲欧美在线视频观看| 一区二区三区四区激情| 日本亚洲视频在线| 国产一区久久久| 92精品国产成人观看免费| 欧洲av一区二区嗯嗯嗯啊| 欧美精品亚洲二区| 成人av集中营| 免费看日韩精品| 国产超碰在线一区| 日本道色综合久久| 日韩一区二区影院| 亚洲国产精品99久久久久久久久| 1024亚洲合集| 日本aⅴ亚洲精品中文乱码| 国产麻豆精品在线观看| 欧美影院午夜播放| 精品国产第一区二区三区观看体验 | 精品国产自在久精品国产| 国产精品国产三级国产普通话蜜臀 | 日韩美女一区二区三区| 中文字幕第一区第二区| 一区二区三区精品久久久| 久久99这里只有精品| 成人一级视频在线观看| 亚洲一区二区精品3399| 婷婷开心久久网| 国产jizzjizz一区二区| 欧美伊人久久久久久午夜久久久久| 欧美情侣在线播放| 久久一区二区三区四区| 亚洲欧美综合色| 激情欧美一区二区| 欧美中文字幕一区二区三区| 久久久精品天堂| 亚洲二区视频在线| eeuss鲁片一区二区三区 | 亚洲欧美日韩中文播放| 免费观看成人鲁鲁鲁鲁鲁视频| 成人爽a毛片一区二区免费| 欧美日韩一级黄| 日韩毛片精品高清免费| 国产宾馆实践打屁股91| 欧美激情一区二区三区全黄 | 伊人色综合久久天天| 日本vs亚洲vs韩国一区三区| 色婷婷综合中文久久一本| 久久夜色精品一区| 色综合激情久久| 欧美色图第一页| 在线免费观看不卡av| 欧美性一二三区| 久久久综合九色合综国产精品| 亚洲三级在线免费| 国产精品99久久久久久久vr| 欧洲av一区二区嗯嗯嗯啊| 国产精品久久久久一区二区三区| 奇米亚洲午夜久久精品| 欧美探花视频资源| 亚洲品质自拍视频网站| 成人教育av在线| 久久久久国产一区二区三区四区| 五月激情综合色| 欧美电影在哪看比较好| 亚洲123区在线观看| 在线视频国内一区二区| 亚洲伦理在线精品| 一本大道久久a久久精品综合| 中文字幕av资源一区| 国产91综合网| 欧美精品久久一区二区三区| 一区av在线播放| 91精品1区2区| 亚洲狠狠爱一区二区三区| 91麻豆国产福利在线观看| 中文字幕 久热精品 视频在线| 国产综合色精品一区二区三区| 欧美一区二区精美| 美女网站色91| 日韩欧美在线不卡| 久久国产精品一区二区| 日韩精品一区二区三区四区视频 | 国产精品亲子伦对白| 成人国产免费视频| 亚洲免费在线播放| 91色porny在线视频| 亚洲国产视频直播| 欧美疯狂性受xxxxx喷水图片| 丝袜美腿一区二区三区| 538prom精品视频线放| 亚洲va韩国va欧美va精品 | 亚洲另类色综合网站| 色诱视频网站一区| 五月天激情综合| 欧美成人福利视频| 国产91丝袜在线观看| 一区二区三区在线免费视频| 884aa四虎影成人精品一区| 美女脱光内衣内裤视频久久网站|