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

? 歡迎來(lái)到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? minigui.h

?? 這是ARM嵌入式系統(tǒng)的實(shí)驗(yàn)教程中的MINIGUI的實(shí)驗(yàn)源代碼!
?? H
?? 第 1 頁(yè) / 共 5 頁(yè)
字號(hào):
 * This function registers a request handler to the server, i.e. \a mginit.
 *
 * \param req_id The identifier of the customized request.
 * \param your_handler The handler of the request. Being NULL to unregister the request handler.
 * \return TRUE on success, FALSE on error.
 *
 * \note Only used by the server to register a request handler.
 *       And the identifier should be larger than \a MAX_SYS_REQID and 
 *       less than or equal to \a MAX_REQID.
 *
 * \sa cli_request, send_reply, MAX_SYS_REQID, MAX_REQID
 */
BOOL GUIAPI RegisterRequestHandler (int req_id, REQ_HANDLER your_handler);

/** 
 * \fn EQ_HANDLER GUIAPI GetRequestHandler (int req_id)
 * \brief Gets the request handler by request identifier.
 *
 * This function returns the request handler of the specified request identifier \a req_id.
 *
 * \param req_id The request identifier.
 * \return The handler on success, NULL on error.
 *
 * \note Only can be used by the server.
 *
 * \sa RegisterRequestHandler
 */
REQ_HANDLER GUIAPI GetRequestHandler (int req_id);

    /** @} end of lite_request_fns */

    /**
     * \defgroup lite_socket_fns General socket operations
     *
     * MiniGUI-Lite uses UNIX domain socket to build the communication
     * between the server and the clients.
     *
     * You can also use the underlay interfaces which MiniGUI uses to create
     * your own UNIX domain socket.
     *
     * Example:
     *
     * \include socket.c
     *
     * @{
     */

/**
 * \fn int serv_listen (const char* name)
 * \brief Creates a listen socket.
 *
 * This function is used by the server to create a listening socket. 
 * Any MiniGUI-Lite application can call this function to create a 
 * listening socket. The server, i.e. \a mginit, of MiniGUI-Lite uses 
 * this function to create its listening socket, and named the socket 
 * to '/var/tmp/minigui'.
 *
 * \param name The path name of the listening socket.
 * \return The file discriptor of the listening socket created, -1 on error.
 *
 * \note As a convention, you should located the socket in '/var/tmp/' directory.
 */
int serv_listen (const char* name);

/**
 * \fn int serv_accept (int listenfd, pid_t *pidptr, uid_t *uidptr)
 * \brief Waits for a client connection to arrive, and accept it.
 *
 * This function is used by the server to wait a connection and accept it.
 *
 * After creating a listening socket by calling \a serv_listen, you can call this
 * function to create a connection with a client. We also obtain the client's PID 
 * and UID from the pathname that it must bind before calling us.
 *
 * \param listenfd The fd of listen socket.
 * \param pidptr The client PID will be saved to this buffer when this function returns.
 * \param uidptr The client UID will be saved to this buffer when this function returns.
 * \return The new connected fd if all OK, < 0 on error.
 *
 * \sa serv_listen, cli_conn
 */
int serv_accept (int listenfd, pid_t *pidptr, uid_t *uidptr);

/**
 * \fn int cli_conn (const char* name, char project)
 * \brief Used by clients to connect to a server.
 *
 * This function is used by clients to connect to a server.
 *
 * The created socket will be located at the directory '/var/tmp',
 * and with name of '/var/tmp/xxxxx-c', where 'xxxxx' is the pid of client.
 * and 'c' is a character to distinguish different projects.
 * MiniGUI itself uses 'a' as the project character to create socket between
 * 'mginit' and clients.
 *
 * \param name The name of the well-known listen socket (created by server).
 * \param project A character to distinguish different projects (Do \em NOT use 'a').
 * \return The new connected fd if all OK, < 0 on error.
 *
 * \sa serv_listen, serv_accept
 */
int cli_conn (const char* name, char project);

#define SOCKERR_IO          -1
#define SOCKERR_CLOSED      -2
#define SOCKERR_INVARG      -3
#define SOCKERR_TIMEOUT     -4
#define SOCKERR_OK          0

/**
 * \fn int sock_write_t (int fd, const void* buff, int count, unsigned int timeout) 
 * \brief Writes data to socket.
 *
 * This function writes the data block pointed to by \a buff 
 * which is \a count bytes long to the socket \a fd.
 *
 * \param fd The file descriptor of the socket.
 * \param buff The buffer contains the data.
 * \param count The length in bytes of the buffer.
 * \param timeout An upper bound on the amount of time elapsed before 
 *        \a sock_write_t returns. When it is zero, \a sock_write_t can 
 *        block indefinitely. The timeout value is in tick count, and 
 *        tick count of MiniGUI is in unit of 10 milliseconds.
 * \return SOCKERR_OK if all OK, < 0 on error.
 *
 * \retval SOCKERR_OK       Read data successfully.
 * \retval SOCKERR_IO       There are some I/O errors occurred.
 * \retval SOCKERR_CLOSED   The socket has been closed by the peer.
 * \retval SOCKERR_INVARG   You passed invalid arguments.
 * \retval SOCKERR_TIMEOUT  Timeout.
 *
 * \note The \a timeout only goes into effect when this function called 
 *       by the server of MiniGUI-Lite, i.e. \a mginit. 
 *
 * \sa sock_read_t
 */
int sock_write_t (int fd, const void* buff, int count, unsigned int timeout);

/**
 * \fn int sock_read_t (int fd, void* buff, int count, unsigned int timeout)
 * \brief Reads data from socket.
 *
 * This function reads data which is \a count bytes long to the buffer \a buff
 * from the socket \a fd.
 *
 * \param fd The file descriptor of the socket.
 * \param buff The buffer used to save the data.
 * \param count The length in bytes of the buffer.
 * \param timeout An upper bound on the amount of time elapsed before 
 *        \a sock_read_t returns. When it is zero, \a sock_read_t can 
 *        block indefinitely. The timeout value is in the tick count of MiniGUI,
 *        and tick count of MiniGUI is in unit of 10 milliseconds.
 * \return SOCKERR_OK if all OK, < 0 on error.
 *
 * \retval SOCKERR_OK       Read data successfully.
 * \retval SOCKERR_IO       There are some I/O errors occurred.
 * \retval SOCKERR_CLOSED   The socket has been closed by the peer.
 * \retval SOCKERR_INVARG   You passed invalid arguments.
 * \retval SOCKERR_TIMEOUT  Timeout.
 *
 * \note The \a timeout only goes into effect when this function called 
 *       by the server of MiniGUI-Lite, i.e. \a mginit. 
 *
 * \sa sock_write_t
 */
int sock_read_t (int fd, void* buff, int count, unsigned int timeout);

/**
 * \def sock_write(fd, buff, count)
 * \brief The blocking version of \a sock_write_t function.
 *
 * \sa sock_write_t
 */
#define sock_write(fd, buff, count) sock_write_t(fd, buff, count, 0)

/**
 * \def sock_read(fd, buff, count)
 * \brief The blocking version of \a sock_read_t function.
 *
 * \sa sock_read_t
 */
#define sock_read(fd, buff, count) sock_read_t(fd, buff, count, 0)

    /** @} end of lite_socket_fns */

    /** @} end of lite_fns */

#endif /* !_STAND_ALONE */
#endif /* LITE_VERSION */

    /**
     * \defgroup init_fns Initialization and termination functions
     *
     * Normally, the only entry of any MiniGUI application is \a MiniGUIMain.
     * The application will terminate when you call \a exit(3) or just return from
     * \a MiniGUIMain.
     *
     * Example 1:
     *
     * \include miniguimain.c
     *
     * Example 2:
     *
     * \include hello_world.c
     *
     * @{
     */

/**
 * \fn BOOL GUIAPI ReinitDesktopEx (BOOL init_sys_text)
 * \brief Re-initializes the desktop.
 *
 * When you changed the charset or the background picture of the desktop,
 * you should call this function to re-initialize the local system text
 * (when \a init_sys_text is TRUE), the background picture, and the desktop
 * menu.
 *
 * \param init_sys_text Indicates whether to initialize the local system text.
 *
 * \return TRUE on success, otherwise FALSE.
 *
 * \sa ReinitDesktop
 */
BOOL GUIAPI ReinitDesktopEx (BOOL init_sys_text);

/**
 * \def ReinitDesktop()
 * \brief Re-initializes the desktop including the local system text.
 *
 * \return TRUE on success, otherwise FALSE.
 *
 * \note This function defined as a macro calling \a ReinitDesktopEx with
 * \a init_sys_text set to TRUE.
 *
 * \sa ReinitDesktopEx
 */
#define ReinitDesktop()    ReinitDesktopEx (TRUE)

/*
 * We remove the SuspendGUI and ResumeGUI functions. 
 * Don't use these two functios any more.
 * void GUIAPI SuspendGUI (void);
 * BOOL GUIAPI ResumeGUI (void); 
 */

/**
 * \fn void GUIAPI ExitGUISafely (int exitcode)
 * \brief Exits your MiniGUI application safely.
 *
 * Calling this function will terminate your MiniGUI application. This
 * function will restore console attributes and call \a exit() function and 
 * pass \a exitcode to it.
 *
 * \param exitcode The exit status will be passed to exit(3) function.
 * \return This function does not return.
 *
 * \sa exit(3)
 */
void GUIAPI ExitGUISafely (int exitcode);

/**
 * \fn int MiniGUIMain (int args, const char* arg[])
 * \brief The main entry of all MiniGUI applications.
 *
 * This function should be defined by your application. MiniGUI defines \a main()
 * function in libminigui library for your application, and call \a MiniGUIMain() 
 * in this \a main() function. The \a main() defined by MiniGUI is responsible of 
 * initializing and terminating MiniGUI.
 *
 * \param args The number of arguments passed to \a main() by operating system.
 * \param arg The arguments passed to \a main() by operating system.
 * \return The exit status will be retured to the parent process.
 *
 */
int MiniGUIMain (int args, const char* arg[]);

#ifndef _LITE_VERSION
/*
 * NOTE: The following two functions is only valid for MiniGUI-Threads
 * since version 1.0.01.
 */
BOOL GUIAPI PreInitGUI (int args, const char* arg[], int* retp);
int GUIAPI PostTerminateGUI (int args, const char* arg[], int rcByGUI); 
#endif /* LITE_VERSION */

#define IDM_DTI_FIRST   (300)

#ifndef _LITE_VERSION
/*
 * NOTE: The following two functions is only valid for MiniGUI-Threads
 * since version 1.0.01.
 */
void GUIAPI CustomizeDesktopMenu (HMENU hDesktopMenu, int iPos);
int GUIAPI CustomDesktopCommand (int id);
#endif

    /** @} end of init_fns */

    /**
     * \defgroup about_dlg About MiniGUI dialog
     * @{
     */
#ifdef _MISC_ABOUTDLG
#ifndef _LITE_VERSION
  void GUIAPI OpenAboutDialog (void);
#else

/**
 * \fn HWND GUIAPI OpenAboutDialog (HWND hHosting)
 * \brief Opens or actives the 'About MiniGUI' dialog.
 *
 * Calling this function will create a main window displaying 
 * copyright and license information of MiniGUI. When the about dialog 
 * is displaying, calling this function again will bring the dialog to be 
 * the topmost main window, not create a new one.
 *
 * \param hHosting The hosting main window of the about dialog.
 * \return The handle to the about dialog box.
 *
 * \note This function is available for MiniGUI-Lite and when _MISC_ABOUTDLG defined.
 * For MiniGUI-Threads, you should call 'void GUIAPI OpenAboutDialog (void)' function
 * instead.
 */
  HWND GUIAPI OpenAboutDialog (HWND hHosting);
#endif /* _LITE_VERSION */
#endif /* _MISC_ABOUTDLG */

    /** @} end of about_dlg */

    /**
     * \defgroup etc_fns Configuration file operations
     *
     * The configuration file used by MiniGUI have a similiar format as M$ Windows INI file,
     * i.e. the file consists of sections, and the section consists of key-value pairs, like this:
     *
     * \code
     * [system]
     * # GAL engine
     * gal_engine=fbcon
     *
     * # IAL engine
     * ial_engine=console
     *
     * mdev=/dev/mouse
     * mtype=PS2
     * 
     * [fbcon]
     * defaultmode=1024x768-16bpp
     * 
     * [qvfb]
     * defaultmode=640x480-16bpp
     * display=0
     * \endcode
     *
     * Assume that the configuration file named \a my.cfg, if you want get the value of \a mdev
     * in \a system section, you can call \a GetValueFromEtcFile in the following way:
     *
     * \code
     * char buffer [51];
     *
     * GetValueFromEtcFile ("my.cfg", "system", "mdev", buffer, 51);
     * \endcode
     *
     * Example:
     *
     * \include cfgfile.c
     *
     * @{
     */

#define ETC_MAXLINE             1024
#define ETC_FILENOTFOUND        -1
#define ETC_SECTIONNOTFOUND     -2
#define ETC_KEYNOTFOUND         -3
#define ETC_TMPFILEFAILED       -4
#define ETC_FILEIOFAILED        -5
#define ETC_INTCONV             -6
#define ETC_OK                  0

#ifndef _INCORE_RES

/**
 * \var char* ETCFILEPATH
 * \brief The path name of MiniGUI configuration file.
 *
 * By default, the configuration file of MiniGUI must be installed in /etc,
 * /usr/local/etc or your home directory. When you install it in your
 * home directory, the name should be ".MiniGUI.cfg".
 *
 * MiniGUI will try to use \a ~/.MiniGUI.cfg, then \a /usr/local/etc/MiniGUI.cfg, 
 * and \a /etc/MiniGUI.cfg last.
 *
 * If MiniGUI can not find any \a MiniGUI.cfg file, or find a bad formated configure
 * file, the initialzation of MiniGUI will be canceled.
 */
extern char ETCFILEPATH [];

#endif /* _INCORE_RES */

/**

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品国产三级国产a| 三级影片在线观看欧美日韩一区二区| 欧美一级二级三级乱码| 色爱区综合激月婷婷| 国产成人av自拍| 久久精品国产第一区二区三区| 亚洲欧洲精品一区二区三区 | 成+人+亚洲+综合天堂| 午夜av一区二区三区| 亚洲女人的天堂| 亚洲色图一区二区三区| 中文字幕电影一区| 久久久www免费人成精品| 26uuu色噜噜精品一区| 日韩一区二区在线观看视频 | 在线观看亚洲一区| 91网站在线播放| av毛片久久久久**hd| 国产麻豆视频精品| av中文字幕不卡| 99精品视频一区二区三区| caoporn国产精品| 欧美在线免费播放| 欧洲一区二区三区免费视频| 欧美性大战久久久久久久| 欧美高清激情brazzers| 欧美精品粉嫩高潮一区二区| 欧美一级一区二区| 久久这里只有精品视频网| 国产日韩成人精品| 一区二区三区欧美久久| 亚洲线精品一区二区三区| 专区另类欧美日韩| 亚洲超丰满肉感bbw| 专区另类欧美日韩| 中文字幕中文字幕一区二区| 国产精品午夜在线| 日韩午夜激情电影| 日韩一区二区三区电影在线观看| 欧洲在线/亚洲| 91黄色激情网站| 国产成a人无v码亚洲福利| 亚洲女人的天堂| 日韩一区在线播放| 亚洲妇女屁股眼交7| 亚洲色欲色欲www| 亚洲精品美国一| 丝袜美腿亚洲一区二区图片| 亚洲五码中文字幕| 天堂精品中文字幕在线| 玉足女爽爽91| 午夜久久电影网| 日韩精品久久久久久| 青青青爽久久午夜综合久久午夜| 一区二区视频在线| 亚洲成在人线免费| 亚洲aaa精品| 粉嫩一区二区三区在线看| 欧美日韩在线播放三区四区| 在线亚洲一区二区| 91国偷自产一区二区开放时间 | 91首页免费视频| 日韩激情视频在线观看| 狠狠色狠狠色综合系列| 99国产精品视频免费观看| 欧美一级片在线看| 欧美国产成人在线| 五月综合激情网| 91麻豆国产精品久久| 欧美影片第一页| 日韩精品一区二区三区四区视频| 欧美激情综合五月色丁香小说| 亚洲精品综合在线| 亚洲国产日韩a在线播放性色| 亚洲视频网在线直播| 精品制服美女丁香| 在线一区二区三区四区| 2023国产精华国产精品| 美女精品自拍一二三四| 欧美日韩一区在线观看| 亚洲欧美另类综合偷拍| 一本久道久久综合中文字幕| 欧美激情一区二区三区不卡| 久久er99精品| 欧美zozozo| 久久国内精品自在自线400部| 51午夜精品国产| 日本vs亚洲vs韩国一区三区 | 99久久99久久精品免费观看| 国产精品免费网站在线观看| av高清不卡在线| 麻豆成人久久精品二区三区红| 久久久不卡影院| 久久成人羞羞网站| 3atv一区二区三区| 免费观看日韩电影| xnxx国产精品| 久久久精品黄色| 国产欧美日韩综合精品一区二区| 黑人精品欧美一区二区蜜桃| 成人影视亚洲图片在线| 日本一区二区三区视频视频| 国产精华液一区二区三区| 精品日韩av一区二区| 久久99精品久久久久婷婷| 欧美一级黄色录像| 毛片av一区二区| 亚洲精品一线二线三线| 欧美性生活久久| 精品一区二区国语对白| 国产精品电影一区二区| 精品视频123区在线观看| 92精品国产成人观看免费| 图片区日韩欧美亚洲| 久久女同性恋中文字幕| 国产99久久久精品| 国产色产综合产在线视频| 欧美怡红院视频| 成人综合在线观看| 理论片日本一区| 亚洲激情自拍偷拍| 国产欧美精品国产国产专区| 精品视频在线免费看| 成人午夜免费av| 国产一区免费电影| 午夜不卡av在线| 亚洲欧美一区二区不卡| 26uuu亚洲婷婷狠狠天堂| 91麻豆精品国产自产在线 | 综合久久久久综合| 精品国产三级a在线观看| 精品视频999| 国产一区二区视频在线| 亚洲韩国精品一区| 国产成人一级电影| 国产凹凸在线观看一区二区| 国产白丝精品91爽爽久久| 奇米精品一区二区三区在线观看一| 精品久久久久久久人人人人传媒| 91理论电影在线观看| 国产大陆亚洲精品国产| av成人动漫在线观看| 欧美激情中文不卡| 韩国理伦片一区二区三区在线播放| 国产精品第五页| 在线中文字幕一区| 麻豆精品久久久| 国产精品久久777777| 91麻豆精品国产91久久久更新时间| 精品中文字幕一区二区| 亚洲精品一二三区| 亚洲精品在线观| 在线观看日韩高清av| 九一九一国产精品| 一区二区三区色| 久久综合国产精品| 欧美视频你懂的| 国产成人精品一区二区三区四区| 亚洲一区二区视频| 亚洲国产精品精华液2区45| 欧美伦理影视网| 不卡av在线免费观看| 蜜乳av一区二区三区| 中文字幕亚洲精品在线观看 | 精品欧美一区二区久久| 99国产精品一区| 国产一区免费电影| 亚洲成人自拍网| 亚洲婷婷国产精品电影人久久| 日韩欧美激情一区| 欧美午夜不卡视频| 成人免费视频一区| 极品少妇xxxx精品少妇| 亚洲一区二区黄色| 国产精品成人免费在线| 久久众筹精品私拍模特| 欧美久久一区二区| 色狠狠av一区二区三区| 成人av免费观看| 国产高清成人在线| 国精产品一区一区三区mba桃花 | 久久99久久久久| 亚洲狠狠爱一区二区三区| 专区另类欧美日韩| 国产精品毛片高清在线完整版| 日韩网站在线看片你懂的| 欧美美女一区二区三区| 欧美在线观看视频一区二区 | 成人开心网精品视频| 另类小说综合欧美亚洲| 天堂一区二区在线| 一区二区三区四区高清精品免费观看 | 国内精品伊人久久久久影院对白| 亚洲大片在线观看| 亚洲精品水蜜桃| 亚洲欧美成人一区二区三区| 一色桃子久久精品亚洲| 亚洲国产精品成人综合色在线婷婷| 欧美成人一区二区| 精品欧美一区二区在线观看|