ryen1987 发表于 2011-11-6 22:08:48

求教onbutton触发显示进度条该如何配置?

各位大侠好,小弟想实现按钮触发进度条显示,通过参考example,得出一下程序,刚学的RTGUI,请各位高手指点一下。
以下程序问题一:进度条不走
问题二:在原有界面的上面弹出一条进度条,其他的不显示
可能我对GUI的各个结构还不是很了解,正在研究中。请帮忙解答一下,谢谢了。
static void demo_view_progressbar(rtgui_widget_t* widget, struct rtgui_event* event)
{
        rtgui_workbench_t *workbench;
        rtgui_view_t *view;
        rtgui_rect_t rect;
        rtgui_label_t *label;

        /* 获得顶层的workbench */
        workbench = RTGUI_WORKBENCH(rtgui_widget_get_toplevel(widget));
        rtgui_widget_get_rect(RTGUI_WIDGET(workbench), &rect);
       
        /* create a demo view */
        view = demo_view(workbench, "ProgressBar View");
       
        /* get demo view rect */
        demo_view_get_rect(view, &rect);
        label = rtgui_label_create("水平进度条:");
        rtgui_container_add_child(RTGUI_CONTAINER(view), RTGUI_WIDGET(label));
        rect.x1 += 5; rect.x2 -= 5;
        rect.y1 += 5; rect.y2 = rect.y1 + 18;
        rtgui_widget_set_rect(RTGUI_WIDGET(label), &rect);
        rect.y1 += 20; rect.y2 = rect.y1 + 18;
        hbar = rtgui_progressbar_create(RTGUI_HORIZONTAL, 100, &rect);
        rtgui_container_add_child(RTGUI_CONTAINER(view), RTGUI_WIDGET(hbar));
        bar_timer = rtgui_timer_create(50, RT_TIMER_FLAG_PERIODIC,
                progressbar_timeout, RT_NULL);
        rtgui_timer_start(bar_timer);

        /* 删除 文件列表 视图 */
        rtgui_view_destroy(RTGUI_VIEW(view));
        rtgui_view_show(_view, RT_FALSE);
}

ffxz 发表于 2011-11-7 09:37:42

你的onbutton函数在哪里?

ryen1987 发表于 2011-11-7 12:57:02

回复【1楼】ffxz
-----------------------------------------------------------------------
    ffxz老大,我是放在demo_button_view里面,就是button的那个例子。
请老大赐教,谢谢了。
    本人刚接触RTT,新手,越研究越觉得RTT有意思,是一个很好的东西。但是可能
是本人能力有限,只能先研究一段时间,才能慢慢上手,而不是拿来就用。不过我想
随着RTT的发展完善,会有更详尽的文档,让我们这些新手更好的入门,期待新的“编
程手册”了。
    给为中国开源事业做无私贡献的工程师们致敬了。

ffxz 发表于 2011-11-7 13:12:36

原来的GUI demo中,显示进度条,并走,依靠的是一个定时器,当定时器超时时,更改进度条的当前值。

你的第二个问题看不太懂:
例如程序中为什么会有
rtgui_view_destroy(RTGUI_VIEW(view));

如果有这个,view就会被删除了。

ryen1987 发表于 2011-11-7 21:05:59

回复【3楼】ffxz
-----------------------------------------------------------------------
ffxz老大,下面的算是定义和调用了定时器吗?
不好意思,可能问的问题有点弱,但是急用,谢谢了哈。

void progressbar_timeout(struct rtgui_timer* timer, void* parameter)
{
        static rt_uint32_t value = 0;

        value ++;
        if (value == 100) value = 0;

        rtgui_progressbar_set_value(hbar, value);
        rtgui_progressbar_set_value(vbar, value);
}

bar_timer = rtgui_timer_create(50, RT_TIMER_FLAG_PERIODIC, progressbar_timeout, RT_NULL);

rtgui_timer_start(bar_timer);

ryen1987 发表于 2011-11-8 20:45:07

自己顶一下,请能人解答。。。谢谢啦。
还有在一个子view,要回到父view需要什么函数?
         view = RTGUI_VIEW(widget->parent);
       workbench = RTGUI_WORKBENCH(RTGUI_WIDGET(view)->parent);
是这两个嘛?

ryen1987 发表于 2011-11-9 12:57:28

有没有人给我解答一下,谢谢啊。急用!!!
页: [1]
查看完整版本: 求教onbutton触发显示进度条该如何配置?