server 掌管整個 GUI system 的所有事件 (event),而根據不同的事件定義不同的結構;在每個不同的結構中都有基本的欄位 _RTGUI_EVENT_WIN_ELEMENTS
:
File: event.h
/*
* RTGUI Window Event
*/
#define _RTGUI_EVENT_WIN_ELEMENTS \
struct rtgui_event parent; \
struct rtgui_win *wid;
rtgui_event
即為事件的基本結構:
struct rtgui_event
{
/* the event type */
enum _rtgui_event_type type;
/* user field of event */
rt_uint16_t user;
/* the event sender */
struct rtgui_app *sender;
/* mailbox to acknowledge request */
rt_mailbox_t ack;
};
typedef struct rtgui_event rtgui_event_t;
#define RTGUI_EVENT_INIT(e, t) do \
{ \
(e)->type = (t); \
(e)->user = 0; \
(e)->sender = rtgui_app_self(); \
(e)->ack = RT_NULL; \
} while (0)
File: server.c
首先,定義一個 app 名叫 server :
static struct rtgui_app *rtgui_server_app = RT_NULL;
接著透過 rtgui_server_entry
啟動 app,也就是 server:
rtgui_server_entry
功能 | 回傳值 |
---|---|
啟動 server | void |
*parameter |
---|
未使用 |
/**
* rtgui server thread's entry
*/
static void rtgui_server_entry(void *parameter)
{
#ifdef _WIN32_NATIVE
/* set the server thread to highest */
HANDLE hCurrentThread = GetCurrentThread();
SetThreadPriority(hCurrentThread, THREAD_PRIORITY_HIGHEST);
#endif
/* create rtgui server application */
rtgui_server_app = rtgui_app_create("rtgui");
if (rtgui_server_app == RT_NULL)
{
rt_kprintf("Create GUI server failed.\n");
return;
}
rtgui_object_set_event_handler(RTGUI_OBJECT(rtgui_server_app),
rtgui_server_event_handler);
/* init mouse and show */
rtgui_mouse_init();
#ifdef RTGUI_USING_MOUSE_CURSOR
rtgui_mouse_show_cursor();
#endif
rtgui_app_run(rtgui_server_app);
rtgui_app_destroy(rtgui_server_app);
rtgui_server_app = RT_NULL;
}
最後會進入 rtgui_app_run
並正式開始執行 server,也就是進入所屬的 event handler
Event handler 也就是 server 的進入點
GUI
RT-Thread
Server
首頁
Sep 30, 2024Thread Thread Create st=>start: start 1 e=>end: end e1=>end: return init=>condition: init attribute stk_sz=>operation: Set Stack Size chk_poli=>condition: FIFO or
Aug 16, 202313.1 多變數函數 $$ \begin{split} z &=& f(x,y)\ D &=& {(x,y)|x,y\in \mathbb{R}}\ R &=& {z|z\in f(x,y)} \end{split} $$ $D$:定義域(domin),注意分母不為 $0$、根號裡面 $\ge0$
Apr 23, 2022使用此管理方式: #define RT_USING_MEMPOOL
Apr 23, 2022or
By clicking below, you agree to our terms of service.
New to HackMD? Sign up