|
我从player_ui中修改的代码,用list_view显示例表显示不出来,而改用listbox就可以正常显示,不知为何??搞一个星期了
这是我的代码:
/* 各个列表项定义 */
static struct rtgui_list_item items[] =
{
{"列表项1", RT_NULL, listitem_action, (void*)1},
{"列表项2", RT_NULL, listitem_action, (void*)2},
{"列表项3", RT_NULL, listitem_action, (void*)3},
{"列表项4", RT_NULL, listitem_action, (void*)4},
{"列表项5", RT_NULL, listitem_action, (void*)5},
};
static void workbench_main_ui(void* parameter)
{
rt_mq_t mq;
rtgui_rect_t rect;
rtgui_list_view_t* _view;
rtgui_listbox_t* listbox;
struct rtgui_workbench* workbench;
mq = rt_mq_create("info_ui", 256, 4, RT_IPC_FLAG_FIFO);
rtgui_thread_register(rt_thread_self(), mq);
workbench = rtgui_workbench_create("main", "workbench #2");
if (workbench == RT_NULL) return;
/* 创建一个列表视图, 项指定为items */
_view = rtgui_list_view_create(items, sizeof(items)/sizeof(struct rtgui_list_item),
&rect, RTGUI_LIST_VIEW_LIST);
/* 在workbench中添加相应的视图 */
rtgui_workbench_add_view(workbench, RTGUI_VIEW(_view));
/* 模式方式显示视图 */
rtgui_view_show(RTGUI_VIEW(_view), RT_TRUE);;
/* 执行工作台事件循环 */
rtgui_workbench_event_loop(workbench);
/* 去注_册GUI线程 */
rtgui_thread_deregister(rt_thread_self());
/* delete message queue */
rt_mq_delete(mq);
}
void workbench_info_ui(void* parameter)
{
rt_mq_t mq;
rtgui_view_t* view;
struct rtgui_workbench* workbench;
mq = rt_mq_create("wmq1", 256, 8, RT_IPC_FLAG_FIFO);
/* 注_册当前线程为GUI线程 */
rtgui_thread_register(rt_thread_self(), mq);
/* 创建一个工作台 */
workbench = rtgui_workbench_create("info", "workbench #1");
if (workbench == RT_NULL) return;
view = rtgui_view_create("view1");
if (view == RT_NULL) return;
/* 指定视图的背景色 */
RTGUI_WIDGET_BACKGROUND(RTGUI_WIDGET(view)) = light_grey;
/* 在工作台上添加一个视图 */
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,分别位于info,panel2和panel3 */
void workbench_init()
{
rt_thread_t tid;
tid = rt_thread_create("wb1", workbench_info_ui, RT_NULL, 1024, 20, 5);
if(tid != RT_NULL) rt_thread_startup(tid);
tid = rt_thread_create("wb2", workbench_main_ui, RT_NULL, 1024, 20, 5);
if(tid != RT_NULL) rt_thread_startup(tid);
}
extern void rt_hw_lcd_init(void);
void rtgui_init(void *p)
{
rtgui_rect_t rect;
/* 初始化RT-Thread/GUI server */
rtgui_system_server_init();
/* 注_册面板1 */
rect.x1 = 0;
rect.y1 = 0;
rect.x2 = 340;
rect.y2 = 24;
rtgui_panel_register("info", &rect);
rtgui_panel_set_default_focused("info");
/* 注_册面板2 */
rect.x1 = 0;
rect.y1 = 24;
rect.x2 = 240;
rect.y2 = 320;
rtgui_panel_register("main", &rect);
/* 初始化LCD驱动 */
rt_hw_lcd_init();
/* 初始化workbench应用 */
workbench_init();
}
我把rtgui_list_item 与 _view = rtgui_list_view_create()处改成listbox显示正常,不知为何呢??少了某个语句吗?? |
阿莫论坛20周年了!感谢大家的支持与爱护!!
如果天空是黑暗的,那就摸黑生存;
如果发出声音是危险的,那就保持沉默;
如果自觉无力发光,那就蜷伏于牆角。
但是,不要习惯了黑暗就为黑暗辩护;
也不要为自己的苟且而得意;
不要嘲讽那些比自己更勇敢的人。
我们可以卑微如尘土,但不可扭曲如蛆虫。
|