搜索
bottom↓
回复: 2

list_view例表显示不出来!

[复制链接]

出0入0汤圆

发表于 2011-8-7 13:53:32 | 显示全部楼层 |阅读模式
我从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周年了!感谢大家的支持与爱护!!

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入0汤圆

发表于 2011-8-10 07:23:36 | 显示全部楼层
_view = rtgui_list_view_create(items, sizeof(items)/sizeof(struct rtgui_list_item), &rect, RTGUI_LIST_VIEW_LIST);

rect不对吧,都没做过初始化

出0入0汤圆

 楼主| 发表于 2011-8-11 21:28:17 | 显示全部楼层
多谢FFXZ大大,今天刚刚找到问题!

rtgui_widget_get_rect(RTGUI_WIDGET(workbench), &rect);加上这语句
及改这语句sizeof(items)/sizeof(struct rtgui_list_item)为例表数,是s什么来的C库为加入.

另:我在初始面板加入以上例表项成功。但是用KEY.C控制其它项如显示文本正常,用KEY.C改变例表项不动,
手动更改list_view 中_rtgui_list_view_constructor()内 view->current_item = 0数值才能改变例表项,这是为何呢?是否
rtgui_list_view_event_handler()此事件响应加入某个函数还是怎的??有高人指教下,多谢!!!
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-19 08:54

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表