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

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

?? minigui.h

?? 使用GPS驅動中間件,先初始化GPS,發送相關命令,等待接收地理的數據,若接收到數據,可從液晶屏中顯示.
?? H
?? 第 1 頁 / 共 5 頁
字號:
/**
 * \file minigui.h
 * \author Wei Yongming <ymwei@minigui.org>
 * \date 2002/01/06
 * 
 * This file includes global and miscellaneous interfaces of MiniGUI.
 *
 \verbatim
    Copyright (C) 1998-2002 Wei Yongming.
    Copyright (C) 2002-2004 Feynman Software.

    This file is part of MiniGUI, a compact cross-platform Graphics 
    User Interface (GUI) support system for real-time embedded systems.

    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

 \endverbatim
 */

/*
 * $Id: minigui.h,v 1.91 2004/07/30 05:51:22 panweiguo Exp $
 * 
 *             MiniGUI for Linux/uClinux, eCos, uC/OS-II, and VxWorks version 1.6.x
 *             Copyright (C) 1998-2002 Wei Yongming.
 *             Copyright (C) 2002-2004 Feynman Software.
 */

#ifndef _MGUI_MINIGUI_H
  #define _MGUI_MINIGUI_H

#include <stdio.h>
#ifndef _LITE_VERSION
  #include "pthread.h"
  #include "semaphore.h"
#endif

#ifdef __cplusplus
extern "C" {
#endif  /* __cplusplus */

    /**
     * \addtogroup global_vars Global variables
     * @{
     */

    /**
     * \defgroup rect_vars Global Rectangles
     * @{
     */

/**
 * \var RECT g_rcScr
 * \brief Contains the rectangle of the whole screen.
 */
extern RECT g_rcScr;         /* The RECT of screen. */

#if defined(_LITE_VERSION) && !defined(_STAND_ALONE)

/**
 * \var RECT g_rcDesktop
 * \brief Contains the rectangle of desktop of the application.
 *
 * \note Only available for MiniGUI-Lite as an actual global variable.
 * And \a g_rcDesktop is defined as an alias (macro) of \a g_rcScr for MiniGUI-Threads.
 *
 * \sa g_rcScr
 */
extern RECT g_rcDesktop;     /* The RECT of desktop. */

#else
#define g_rcDesktop     g_rcScr
#endif

    /** @} end of rect_vars */

    /**
     * \defgroup lite_vars MiniGUI-Lite specific variables
     * @{
     */

#if defined(_LITE_VERSION) && !defined(_STAND_ALONE)

#include <sys/types.h>

/**
 * \var BOOL mgIsServer
 * \brief Indicates whether the process is the server or a client on MiniGUI-Lite.
 *
 * \note Only defined for MiniGUI-Lite.
 */
extern BOOL mgIsServer;      /* Is the server or a client. */

/**
 * \var void* mgSharedRes
 * \brief Contains the pointer to the shared resource of MiniGUI-Lite.
 *
 * \note Not defined for MiniGUI-Threads, and the shared resource is
 * read-only for all clients.
 *
 * \sa mgSizeRes
 */
extern void* mgSharedRes;    /* The pointer to shared resource. */

/**
 * \var void* mgSizeRes
 * \brief Contains the length of shared resource of MiniGUI-Lite.
 *
 * \note Only defined for MiniGUI-Lite. 
 *
 * \sa mgSharedRes
 */
extern size_t mgSizeRes;     /* The size of shared resource. */

#define LEN_LAYER_NAME      14
#define LEN_CLIENT_NAME     14

#define INV_LAYER_HANDLE    0

/* variables only available for the server */

struct MG_Layer;

/** Client information. */
typedef struct MG_Client
{
    /** The name of the client. */
    char    name [LEN_CLIENT_NAME + 1];

    /** PID of the client process. */
    pid_t   pid;
    /** UID of the client process. */
    uid_t   uid;
    /** The file descriptor of the socket connected to the client. */
    int     fd;

    /** The desktop rectangle of the client. */
    RECT    rc;
    /** The last active tick count of the client. */
    DWORD   last_live_time;
    /** The additional data of the client. */
    DWORD   dwAddData;

    /** The pointer to the next client in the same layer. */
    struct  MG_Client* next;
    /** The pointer to the previous client in the same layer. */
    struct  MG_Client* prev;

    /** The pointer to the layer on which the client lays. */
    struct  MG_Layer* layer;

    struct GlobalRes* global_res;
} MG_Client;

struct _CLIPRGN;

/** Layer information. */
typedef struct MG_Layer
{
    /** The name of the layer. */
    char    name [LEN_LAYER_NAME + 1];

    /** The pointer to the list of clients which lay on the layer. */
    MG_Client* cli_head;
    /** The pointer to the active client on the layer. */
    MG_Client* cli_active;
    /** The additional data of the layer. */
    DWORD   dwAddData;

    /** The pointer to the next layer. */
    struct MG_Layer* next;
    /** The pointer to the previous layer. */
    struct MG_Layer* prev;

    /** The pointer to the region contains the spare rectangles of the layer. */
    struct _CLIPRGN* spare_rects;
} MG_Layer;

/**
 * \var int mgClientSize
 * \brief The current size of the array \a mgClients.
 *
 * \sa mgClients
 */
extern int mgClientSize;

/**
 * \var MG_Client* mgClients
 * \brief The pointer to the array contains all clients' information.
 *
 * You can access the elements in \a mgClients as a normal array. If the 
 * field \a fd of one element is not less than zero, then the element
 * will be a vaild client.
 *
 * \sa MG_Client
 */
extern MG_Client* mgClients;

/**
 * \var MG_Layer* mgTopmostLayer
 * \brief The pointer to the topmost layer.
 *
 * \sa MG_Layer
 */
extern MG_Layer* mgTopmostLayer;

/**
 * \var MG_Layer* mgLayers
 * \brief The pointer to the list of layers.
 *
 * \sa MG_Layer
 */
extern MG_Layer* mgLayers;

#endif /* _LITE_VERSION && !_STAND_ALONE */

    /** @} end of lite_vars */

    /** @} end of global_vars */

#ifndef _LITE_VERSION
BOOL GUIAPI InitGUI (void);
void GUIAPI TerminateGUI (int rcByGUI);
void GUIAPI MiniGUIPanic (int exitcode);
#endif

    /**
     * \addtogroup fns Functions
     * @{
     */

    /**
     * \addtogroup global_fns Global/general functions
     * @{
     */

    /**
     * \defgroup lite_fns MiniGUI-Lite specific functions
     * @{
     */

#ifdef _LITE_VERSION

    /**
     * \defgroup lite_listenfd_fns Listening a file descriptor
     *
     * Register/Unregister a listen fd to MiniGUI.
     *
     * When you need to listen a file descriptor, you can use \a select(2)
     * system call. In MiniGUI, you can also register it to MiniGUI to 
     * be a listened fd, and when there is a read/write/except event on 
     * the registered fd , MiniGUI will sent a notification message to 
     * the registered window.
     *
     * Example:
     *
     * \include listenfd.c
     *
     * @{
     */

#define MAX_NR_LISTEN_FD   5

/** 
 * \fn BOOL GUIAPI RegisterListenFD (int fd, int type, HWND hwnd, void* context)
 * \brief Registers a listened file descriptor to MiniGUI-Lite.
 * This function registers the file desciptor \a fd to MiniGUI-Lite for listening.
 *
 * When there is a read/write/except event on this \a fd, MiniGUI
 * will post a MSG_FDEVENT message with wParam being equal to
 * MAKELONG (fd, type), and the lParam being set to \a context
 * to the target window.
 *
 * \param fd The file descriptor to be listened.
 * \param type The type of the event to be listened, can be POLLIN, POLLOUT, or POLLERR.
 * \param hwnd The handle to the window will receive MSG_FDEVENT message.
 * \param context The value will be passed to the window as lParam of MSG_FDEVENT message.
 * \return TRUE if all OK, and FALSE on error.
 *
 * \note Only available on MiniGUI-Lite.
 *
 * \sa UnregisterListenFD, system_msgs
 */
BOOL GUIAPI RegisterListenFD (int fd, int type, HWND hwnd, void* context);

/** 
 * \fn BOOL GUIAPI UnregisterListenFD (int fd)
 * \brief Unregisters a being listened file descriptor.
 *
 * This function unregisters the being listened file descriptor \a fd.
 *
 * \param fd The file descriptor to be unregistered, should be a being 
 *        listened file descriptor.
 * \return TRUE if all OK, and FALSE on error.
 *
 * \note Only available on MiniGUI-Lite.
 *
 * \sa RegisterListenFD
 */
BOOL GUIAPI UnregisterListenFD (int fd);

    /** @} end of lite_listenfd_fns */

#ifdef _STAND_ALONE

#define SetDesktopRect(lx, ty, rx, by) {}

#else

    /**
     * \defgroup lite_layer_fns Layer operations
     *
     * A client in MiniGUI-Lite can create a new layer or join an existed layer 
     * in order to get the visible desktop rectangle on the screen of it.
     *
     * Example:
     *
     * \include client_startup.c
     *
     * @{
     */

/** 
 * \fn GHANDLE GUIAPI JoinLayer (const char* layer_name, const char* client_name, int lx, int ty, int rx, int by)
 * \brief Joins to a layer.
 *
 * This function should be called by clients before calling any other MiniGUI
 * functions. You can call \a GetLayerInfo to get the layer information.
 * If the layer to be joined does not exist, the server, i.e. \a mginit, will
 * try to create a new one. If you passed a NULL pointer or a null string for 
 * \a layer_name, a new layer will be created as well.
 *
 * For the server of MiniGUI-Lite, this function will ignore the arguments of
 * \a layer_name and \a client_name. The rectangle defines a region in the 
 * screen, which is exclusively used by the server, no client can output
 * to this exclusive retangle.
 *
 * The server usually calls SetDesktopRect macro, which is defined as
 * the following:
 *
 * \code
 *
 * #define SetDesktopRect(lx, ty, rx, by) JoinLayer ("", "", lx, ty, rx, by)
 *
 * \endcode
 * 
 * Note that the server can define the exclusive retangle out of the actual
 * screen range.
 * 
 * \param layer_name The name of the layer.
 * \param client_name The name of the client.
 * \param lx lx,ty,rx,by: The expected desktop rect of the client.
 * \param ty lx,ty,rx,by: The expected desktop rect of the client.
 * \param rx lx,ty,rx,by: The expected desktop rect of the client.
 * \param by lx,ty,rx,by: The expected desktop rect of the client.
 * \return The handle to the layer on success, INV_LAYER_HANDLE on error.
 *
 * \sa GetLayerInfo, GetDesktopRect, ServerStartup
 */
GHANDLE GUIAPI JoinLayer (const char* layer_name, const char* client_name, 
                int lx, int ty, int rx, int by);

#define SetDesktopRect(lx, ty, rx, by) \
        JoinLayer ("", "", lx, ty, rx, by)

/** 
 * \fn void GUIAPI GetDesktopRect (int* lx, int* ty, int* rx, int* by)
 * \brief Gets the desktop rectangle.
 *
 * After joined to a layer, client can call this function to get the
 * actual desktop rect of itself. 
 *
 * \param lx lx,ty,rx,by: The desktop rect will be returned through these pointers.
 * \param ty lx,ty,rx,by: The desktop rect will be returned through these pointers.
 * \param rx lx,ty,rx,by: The desktop rect will be returned through these pointers.
 * \param by lx,ty,rx,by: The desktop rect will be returned through these pointers.
 *
 * \sa JoinLayer
 */
void GUIAPI GetDesktopRect (int* lx, int* ty, int* rx, int* by);

#define NAME_SELF_LAYER     ""

/** 
 * \fn GHANDLE GUIAPI GetLayerInfo (const char* layer_name, RECT* max_rect, int* nr_clients, BOOL* is_topmost, int* cli_active)
 * \brief Gets information of a layer.
 *
 * You can get the information of a layer through this function. 
 * The information will be returned through the pointer arguments 

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
色狠狠一区二区三区香蕉| 久久精品一区二区| 欧美日韩中文精品| 日韩三级免费观看| 国产欧美一区二区三区在线看蜜臀| 欧美精品一区二区三区高清aⅴ | 国产精品久久久久桃色tv| 国产精品乱人伦| 亚洲国产综合91精品麻豆 | 奇米精品一区二区三区四区| 看国产成人h片视频| 国产精品18久久久久久vr| 91麻豆视频网站| 欧美一区二区啪啪| 国产免费观看久久| 亚洲福中文字幕伊人影院| 国产精品中文字幕一区二区三区| av日韩在线网站| 日韩视频不卡中文| 亚洲精品乱码久久久久久久久| 日韩中文字幕av电影| 国产99精品在线观看| 7777精品久久久大香线蕉| 久久久久一区二区三区四区| 亚洲一区二区欧美日韩| 国产精品一区二区三区四区| 欧美色爱综合网| 国产精品天干天干在观线| 视频一区中文字幕| 99久久99久久久精品齐齐| 久久久久久久久免费| 石原莉奈在线亚洲二区| 91福利在线观看| 综合网在线视频| a在线播放不卡| 中文字幕av资源一区| 成人一区二区三区在线观看| 日韩精品最新网址| 美女mm1313爽爽久久久蜜臀| 91精品国产日韩91久久久久久| 久久精品99久久久| 国产精品三级久久久久三级| 欧洲激情一区二区| 日本欧美一区二区| 欧美xingq一区二区| 国产毛片一区二区| 综合在线观看色| 欧美伊人久久久久久久久影院| 日韩va亚洲va欧美va久久| 在线欧美日韩国产| 看电影不卡的网站| 国产精品国产a| 欧美亚洲动漫另类| 玖玖九九国产精品| 国产亚洲一区二区三区| 国产成人综合视频| 亚洲高清免费一级二级三级| 精品欧美一区二区在线观看| 成人高清伦理免费影院在线观看| 亚洲成人自拍一区| 久久精品一区二区三区不卡| 91免费观看国产| 国产在线播放一区二区三区| 亚洲日本va午夜在线电影| 欧美一区二区三区公司| 91亚洲国产成人精品一区二区三| 午夜欧美一区二区三区在线播放| 337p日本欧洲亚洲大胆色噜噜| 色老汉一区二区三区| 国产一区二区三区四区在线观看| 国产精品国产自产拍在线| 欧美一区二区福利视频| 色综合 综合色| 国产成人av一区二区| 日韩综合小视频| 综合网在线视频| 一区二区三区日韩精品| 精品国产一区二区亚洲人成毛片 | 日本一区二区三区dvd视频在线| 色综合视频在线观看| 蜜桃av噜噜一区| 美女在线一区二区| 亚洲成在线观看| 免费不卡在线观看| 久久精品999| 秋霞电影一区二区| 亚洲成人福利片| 伊人性伊人情综合网| 国产色产综合色产在线视频| 国产亚洲综合av| 久久久久高清精品| 国产色91在线| 中文字幕一区三区| 亚洲人妖av一区二区| 中文字幕中文在线不卡住| 亚洲国产高清aⅴ视频| 一区二区国产盗摄色噜噜| 亚洲免费电影在线| 依依成人综合视频| 亚洲电影第三页| 日韩高清不卡一区二区三区| 久久国产尿小便嘘嘘尿| 国产一区二区在线视频| 岛国av在线一区| 99精品桃花视频在线观看| 欧美色图激情小说| 久久亚洲综合色一区二区三区| 一级日本不卡的影视| 亚洲一二三四在线观看| 日韩高清在线电影| 成人黄色777网| 欧美在线观看一二区| 2017欧美狠狠色| 午夜欧美视频在线观看| 国产呦萝稀缺另类资源| 理论电影国产精品| 东方欧美亚洲色图在线| 色香蕉成人二区免费| 欧美一区二区三区免费大片 | 日韩精品一区二区三区视频 | 国产在线播放一区三区四| 91国产丝袜在线播放| 欧美videossexotv100| 调教+趴+乳夹+国产+精品| 精久久久久久久久久久| 91精品一区二区三区久久久久久| 国产精品九色蝌蚪自拍| 日韩电影免费在线| 欧美伦理视频网站| 日韩经典一区二区| 欧美在线观看视频一区二区| 亚洲日本在线观看| 99精品一区二区| 亚洲码国产岛国毛片在线| 91在线免费看| 亚洲乱码中文字幕| 在线免费观看成人短视频| 五月婷婷色综合| 国产精品香蕉一区二区三区| 91精品国产福利在线观看| 日韩精品一二三区| 亚洲bt欧美bt精品| 成人综合激情网| 日韩欧美亚洲另类制服综合在线| 久久精品久久精品| 亚洲免费在线电影| 精品视频一区 二区 三区| 奇米精品一区二区三区在线观看| 欧美一区二区三区四区在线观看| 日本免费在线视频不卡一不卡二| 日韩免费看的电影| 国产91精品露脸国语对白| 亚洲女爱视频在线| 欧美日韩国产另类一区| 免费人成精品欧美精品| 久久一二三国产| 国产v综合v亚洲欧| 亚洲女与黑人做爰| 欧美日韩激情在线| 精品一区二区久久久| 国产精品国产三级国产aⅴ无密码 国产精品国产三级国产aⅴ原创 | 欧美一区二区日韩一区二区| 国产综合色在线视频区| 一区二区三区国产精华| 欧美精品一区二区三区蜜臀| 在线影院国内精品| 国产精品一级二级三级| 亚洲国产毛片aaaaa无费看| 91精品国产综合久久久久久漫画| 国产不卡视频在线播放| 伊人色综合久久天天人手人婷| 3atv一区二区三区| 国产成人精品一区二区三区网站观看 | 精品视频在线看| 91看片淫黄大片一级在线观看| 亚洲欧美日韩国产综合在线| 日韩视频一区在线观看| 在线精品视频免费观看| 99久久精品免费看国产免费软件| 国产一区二区视频在线播放| 视频一区二区三区中文字幕| 亚洲狠狠爱一区二区三区| 亚洲精品久久久久久国产精华液| 中文字幕中文乱码欧美一区二区| 欧美韩国日本一区| 亚洲国产精品av| 亚洲日本va在线观看| 亚洲免费av高清| 五月婷婷综合网| 精东粉嫩av免费一区二区三区| 亚洲精品一二三四区| 中文无字幕一区二区三区| 欧美成人欧美edvon| 欧美日韩国产在线观看| 91偷拍与自偷拍精品| av不卡免费在线观看| 国产成人亚洲精品青草天美| 国产一区二区成人久久免费影院| 蜜桃视频一区二区| 三级一区在线视频先锋 |