update menu demo.
git-svn-id: https://rt-thread.googlecode.com/svn/trunk@1221 bbd45198-f89e-11dd-88c7-29a3b14d5316
This commit is contained in:
parent
297405c3c6
commit
990d052de1
|
@ -0,0 +1,60 @@
|
||||||
|
/*
|
||||||
|
* A simple workbench
|
||||||
|
*/
|
||||||
|
#include <rtthread.h>
|
||||||
|
#include <rtgui/rtgui_server.h>
|
||||||
|
#include <rtgui/rtgui_system.h>
|
||||||
|
#include <rtgui/widgets/label.h>
|
||||||
|
#include <rtgui/widgets/workbench.h>
|
||||||
|
|
||||||
|
static void workbench_entry(void* parameter)
|
||||||
|
{
|
||||||
|
rt_mq_t mq;
|
||||||
|
rtgui_view_t* view;
|
||||||
|
rtgui_label_t* label;
|
||||||
|
struct rtgui_workbench* workbench;
|
||||||
|
rtgui_rect_t rect;
|
||||||
|
|
||||||
|
mq = rt_mq_create("wmq", 256, 8, RT_IPC_FLAG_FIFO);
|
||||||
|
/* 注册当前线程为GUI线程 */
|
||||||
|
rtgui_thread_register(rt_thread_self(), mq);
|
||||||
|
/* 创建一个工作台 */
|
||||||
|
workbench = rtgui_workbench_create("main", "workbench #1");
|
||||||
|
if (workbench == RT_NULL) return;
|
||||||
|
|
||||||
|
view = rtgui_view_create("view");
|
||||||
|
if (view == RT_NULL) return;
|
||||||
|
/* 指定视图的背景色 */
|
||||||
|
RTGUI_WIDGET_BACKGROUND(RTGUI_WIDGET(view)) = white;
|
||||||
|
|
||||||
|
/* 添加一个label */
|
||||||
|
label = rtgui_label_create("你好!RT-Thread!");
|
||||||
|
rect.x1 = 10; rect.y1 = 10;
|
||||||
|
rect.x2 = 210; rect.y2 = 30;
|
||||||
|
/* 设置label的位置 */
|
||||||
|
rtgui_widget_set_rect(RTGUI_WIDGET(label), &rect);
|
||||||
|
rtgui_container_add_child(RTGUI_CONTAINER(view), RTGUI_WIDGET(label));
|
||||||
|
|
||||||
|
/* 添加到父workbench中 */
|
||||||
|
rtgui_workbench_add_view(workbench, view);
|
||||||
|
/* 非模式方式显示视图 */
|
||||||
|
rtgui_view_show(view, RT_FALSE);
|
||||||
|
|
||||||
|
/* 执行工作台事件循环 */
|
||||||
|
rtgui_workbench_event_loop(workbench);
|
||||||
|
|
||||||
|
/* 去注册GUI线程 */
|
||||||
|
rtgui_thread_deregister(rt_thread_self());
|
||||||
|
|
||||||
|
/* delete message queue */
|
||||||
|
rt_mq_delete(mq);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 初始化workbench */
|
||||||
|
void wb_init()
|
||||||
|
{
|
||||||
|
rt_thread_t tid;
|
||||||
|
|
||||||
|
tid = rt_thread_create("wb1", workbench_entry, RT_NULL, 2048, 20, 5);
|
||||||
|
if (tid != RT_NULL) rt_thread_startup(tid);
|
||||||
|
}
|
|
@ -7,21 +7,25 @@
|
||||||
#include <rtgui/widgets/menu.h>
|
#include <rtgui/widgets/menu.h>
|
||||||
#include <rtgui/widgets/button.h>
|
#include <rtgui/widgets/button.h>
|
||||||
|
|
||||||
|
static rt_bool_t _onmenuitem(struct rtgui_widget *widget, struct rtgui_event* event)
|
||||||
static rtgui_menu_item_t sub_items[] =
|
|
||||||
{
|
{
|
||||||
{RTGUI_ITEM_NORMAL, "item #1", RT_NULL, RT_NULL, 0, RT_NULL},
|
rt_kprintf("menu action!!\n");
|
||||||
|
return RT_TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
static const rtgui_menu_item_t sub_items[] =
|
||||||
|
{
|
||||||
|
{RTGUI_ITEM_NORMAL, "item #1", RT_NULL, RT_NULL, 0, _onmenuitem},
|
||||||
{RTGUI_ITEM_NORMAL, "item #2", RT_NULL, RT_NULL, 0, RT_NULL},
|
{RTGUI_ITEM_NORMAL, "item #2", RT_NULL, RT_NULL, 0, RT_NULL},
|
||||||
{RTGUI_ITEM_SEPARATOR, RT_NULL, RT_NULL, RT_NULL, 0, RT_NULL},
|
{RTGUI_ITEM_SEPARATOR, RT_NULL, RT_NULL, RT_NULL, 0, RT_NULL},
|
||||||
{RTGUI_ITEM_NORMAL, "item #3", RT_NULL, RT_NULL, 0, RT_NULL},
|
{RTGUI_ITEM_NORMAL, "item #3", RT_NULL, RT_NULL, 0, RT_NULL},
|
||||||
};
|
};
|
||||||
static rtgui_menu_item_t items[] =
|
static const rtgui_menu_item_t items[] =
|
||||||
{
|
{
|
||||||
{RTGUI_ITEM_NORMAL, "item #1", RT_NULL, RT_NULL, 0, RT_NULL},
|
{RTGUI_ITEM_NORMAL, "item #1", RT_NULL, RT_NULL, 0, RT_NULL},
|
||||||
{RTGUI_ITEM_NORMAL, "item #2", RT_NULL, RT_NULL, 0, RT_NULL},
|
{RTGUI_ITEM_NORMAL, "item #2", RT_NULL, RT_NULL, 0, RT_NULL},
|
||||||
{RTGUI_ITEM_SEPARATOR, RT_NULL, RT_NULL, RT_NULL, 0, RT_NULL},
|
{RTGUI_ITEM_SEPARATOR, RT_NULL, RT_NULL, RT_NULL, 0, RT_NULL},
|
||||||
{RTGUI_ITEM_NORMAL, "item #3", RT_NULL, RT_NULL, 0, RT_NULL},
|
{RTGUI_ITEM_SUBMENU, "item #3", RT_NULL, sub_items, sizeof(sub_items)/sizeof(sub_items[0]), RT_NULL},
|
||||||
// {RTGUI_ITEM_SUBMENU, "item #3", RT_NULL, sub_items, sizeof(sub_items)/sizeof(sub_items[0]), RT_NULL},
|
|
||||||
};
|
};
|
||||||
static rtgui_menu_t* menu;
|
static rtgui_menu_t* menu;
|
||||||
|
|
||||||
|
@ -33,7 +37,7 @@ static _onmenu(struct rtgui_widget* widget, struct rtgui_event* event)
|
||||||
rtgui_widget_rect_to_device(widget, &rect);
|
rtgui_widget_rect_to_device(widget, &rect);
|
||||||
|
|
||||||
if (menu != RT_NULL)
|
if (menu != RT_NULL)
|
||||||
rtgui_menu_pop(menu, rect.x1, rect.y2);
|
rtgui_menu_pop(menu, rect.x1, rect.y2 + 5);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* 创建用于演示menu控件的视图 */
|
/* 创建用于演示menu控件的视图 */
|
||||||
|
|
Loading…
Reference in New Issue