neilxiang 发表于 2010-9-2 09:58:28

scrollbar控件问题请教!

今天上位机测试scrollbar控件
http://cache.amobbs.com/bbs_upload782111/files_32/ourdev_579575.JPG
程序刚运行 (原文件名:scrollbar初始.JPG)

http://cache.amobbs.com/bbs_upload782111/files_32/ourdev_579576.JPG
点击鼠标之后的效果,注意scrollbar控件最右边的黑线 (原文件名:scrollbar点击之后.JPG)



请教如下问题:
   1   rtgui_scrollbar_set_range(vbar,0,32);
       rtgui_scrollbar_set_page_step(vbar,1);
       rtgui_scrollbar_set_line_step(vbar,1);
      
       set_range set_page_stpe,set_line_step分别设置了什么?
       假如我的VIEW视图中要显示32项数据,但是视图只能显示10项,所以设置range为32
       每次点一下鼠标滚动到下一项,所以要设置step为1,但是要设置page呢还设line呢?
   2   点击鼠标之后scrollbar最右边有黑线,这种现象对吗?
      
   3   视图中的scrollbar点击之后我要获取点击事件,之后更新视图中的内容,在什么地方处理呢?
       假如我在info_search_view的事件处理函数中处理RTGUI_EVENT_PAINT事件,此时用DC函数更新数据
       那么新的scrollbar的当前值如何获取呢?

       此外这种处理方法对吗(视图中的scrollbar点击之后我要获取点击事件,之后更新视图中的内容)?
       static rt_bool_t info_search_view_event_hanlder(rtgui_widget_t* widget, rtgui_event_t *event)
       {
         rt_bool_t result;
        struct rt_dc* dc;
        rtgui_rect_t rect;
        char content;
       
   
        if (event->type == RTGUI_EVENT_PAINT)
        {
                rtgui_view_event_handler(widget,event);
               
                //下面是DC的处理
                     dc = rtgui_dc_begin_drawing(widget);

                //如果不能正常获得DC,返回(如果控件或父控件是隐藏状态,DC是获取不成功的)
                if (dc == RT_NULL)
                        return RT_FALSE;

                //获取控件矩形
                     rtgui_widget_get_rect(RTGUI_VIEW(widget),&rect);
      
                strcpy(content,"工号");
                rect.x1=20;
                rect.x2=rect.x1+40;
                rect.y1=20;
                rect.y2=rect.y1+20;
                rtgui_dc_draw_text(dc,content,&rect);

                rect.x1=rect.x2+20;
                rect.x2=rect.x1+40;

                strcpy(content,"名称");
                rtgui_dc_draw_text(dc,content,&rect);

                     rect.x1=rect.x2+20;
                rect.x2=rect.x1+40;

                strcpy(content,"职位");
                rtgui_dc_draw_text(dc,content,&rect);

                rtgui_dc_end_drawing(dc);
               
        }
        else
        {
              /* 用默认的事件处理函数 */
           returnrtgui_view_event_handler(widget, event);
        }
        return RT_FALSE;
       }

ffxz 发表于 2010-9-2 10:18:45

1.
page --> 鼠标点击滚动条的空白处将以page的方式进行。
line --> 鼠标点击上、下按钮时将以line的方式进行。

2.
绘图还有些问题,以后会更正。

3.
有个on_scroll回调函数,在那个地方挂上就可以了。

neilxiang 发表于 2010-9-2 10:35:41

回复【1楼】ffxz
1.
page --> 鼠标点击滚动条的空白处将以page的方式进行。
line --> 鼠标点击上、下按钮时将以line的方式进行。
2.
绘图还有些问题,以后会更正。
3.
有个on_scroll回调函数,在那个地方挂上就可以了。
-----------------------------------------------------------------------

第一个问题明白了,但是第三个可以说详细点吗?怎么挂呢?

neilxiang 发表于 2010-9-2 10:43:16

回复【2楼】neilxiang
-----------------------------------------------------------------------

回复【2楼】neilxiang
回复【1楼】ffxz
1.
page --> 鼠标点击滚动条的空白处将以page的方式进行。
line --> 鼠标点击上、下按钮时将以line的方式进行。
2.   
绘图还有些问题,以后会更正。
3.
有个on_scroll回调函数,在那个地方挂上就可以了。
-----------------------------------------------------------------------
第一个问题明白了,但是第三个可以说详细点吗?怎么挂呢?
-----------------------------------------------------------------------

明白了,有一个rtgui_scrollbar_set_onscroll()函数可以调用!谢谢!

lixuyongzd 发表于 2010-9-2 10:57:51

请教一下楼主是用什么仿真的?

ffxz 发表于 2010-9-2 12:00:35

VC++

RT-Thread/GUI是能够在VC++上进行开发调试的,然后代码不用修改就可以放到设备上运行。

lixuyongzd 发表于 2010-9-2 12:09:36

VC++还不会用,会用一点点bcb 看他的好像是TKstudio

ffxz 发表于 2010-9-2 12:12:14

回复【6楼】lixuyongzd
vc++还不会用,会用一点点bcb 看他的好像是tkstudio
-----------------------------------------------------------------------

哈哈,他用的应该是VC++ 2005或2008等高级版本吧:-)

VC++么,调试简单些。对应到RT-Thread/GUI上则是不用烧写代码,开发起来比较容易

lixuyongzd 发表于 2010-9-2 12:29:56

有可能,我就见过vc++ 6.0的界面,高版本的没见过

neilxiang 发表于 2010-9-2 13:57:28

回复【4楼】lixuyongzd
-----------------------------------------------------------------------

VS2005

gavin_li 发表于 2010-9-2 21:15:29

晕啊,我一直都在用RVMD3.8,早知道VC可用,就用VC了.

lixuyongzd 发表于 2010-9-3 13:19:35

用的是X86平台的移植吗?

ffxz 发表于 2010-9-3 13:42:42

这是一套模拟环境,在SDL基础上模拟出了RT-Thread核心的API,这样基本上内核可用,文件系统可用,图形界面可用,(网络协议栈理论上也可用),缺点是finsh shell不可用。

因为是SDL基础上模拟的,SDL具备良好的夸平台特性,所以能够使用VC++直接开发,也能够在Linux下直接开发。

SDL - Simple DirectMedia Layer
http://www.libsdl.org/index.php

lixuyongzd 发表于 2010-9-3 18:43:33

回复【12楼】ffxz
这是一套模拟环境,在sdl基础上模拟出了rt-thread核心的api,这样基本上内核可用,文件系统可用,图形界面可用,(网络协议栈理论上也可用),缺点是finsh shell不可用。
因为是sdl基础上模拟的,sdl具备良好的夸平台特性,所以能够使用vc++直接开发,也能够在linux下直接开发。
sdl - simple directmedia layer
http://www.libsdl.org/index.php

-----------------------------------------------------------------------

太热心了,反应好快,可惜都不懂,都是第一次听说,看来还是老老实实用STM32下载调试比较现实
页: [1]
查看完整版本: scrollbar控件问题请教!