硬汉嵌入式论坛

 找回密码
 立即注册
查看: 275|回复: 21
收起左侧

[emWin] SCROLLBAR滚动条控件,点击一次向下箭头,会跑到最底部才会停止,找不出原因,有人遇到过同样的问题吗?

[复制链接]

2

主题

13

回帖

19

积分

新手上路

积分
19
发表于 2024-4-16 21:19:53 | 显示全部楼层 |阅读模式
emwin中SCROLLBAR滚动条控件,点击一次向下箭头,会跑到最底部才会停止,找不出原因,有人遇到过同样的问题吗?


回复

使用道具 举报

2

主题

13

回帖

19

积分

新手上路

积分
19
 楼主| 发表于 2024-4-16 21:22:19 | 显示全部楼层
                        hscroll = SCROLLBAR_CreateAttached(hItem, GUI_ID_VSCROLL);                         SCROLLBAR_SetWidth(hscroll, 30);                         SCROLLBAR_GetSkinFlexProps(&pProps, SCROLLBAR_SKINFLEX_PI_UNPRESSED);                         pProps.aColorFrame[0] = GUI_TRANSPARENT;                         pProps.aColorFrame[1] = GUI_GRAY;                         pProps.aColorFrame[2] = GUI_TRANSPARENT;                         pProps.aColorUpper[0] = GUI_TRANSPARENT;                         pProps.aColorUpper[1] = GUI_TRANSPARENT;                         pProps.aColorLower[0] = GUI_TRANSPARENT;                         pProps.aColorLower[1] = GUI_TRANSPARENT;                         pProps.aColorShaft[0] = GUI_TRANSPARENT;                         pProps.aColorShaft[1] = GUI_TRANSPARENT;                         pProps.ColorArrow = GUI_GRAY;                         pProps.ColorGrasp = GUI_GRAY;                         SCROLLBAR_SetSkinFlexProps(&pProps, SCROLLBAR_SKINFLEX_PI_UNPRESSED);                         SCROLLBAR_SetSkinFlexProps(&pProps, SCROLLBAR_SKINFLEX_PI_PRESSED);
回复

使用道具 举报

2

主题

13

回帖

19

积分

新手上路

积分
19
 楼主| 发表于 2024-4-16 22:06:57 | 显示全部楼层
        这是配置               
                        hscroll = SCROLLBAR_CreateAttached(hItem, GUI_ID_VSCROLL);
                        SCROLLBAR_SetWidth(hscroll, 30);
                        SCROLLBAR_GetSkinFlexProps(&pProps, SCROLLBAR_SKINFLEX_PI_UNPRESSED);
                        pProps.aColorFrame[0] = GUI_TRANSPARENT;
                        pProps.aColorFrame[1] = GUI_GRAY;
                        pProps.aColorFrame[2] = GUI_TRANSPARENT;
                        pProps.aColorUpper[0] = GUI_TRANSPARENT;
                        pProps.aColorUpper[1] = GUI_TRANSPARENT;
                        pProps.aColorLower[0] = GUI_TRANSPARENT;
                        pProps.aColorLower[1] = GUI_TRANSPARENT;
                        pProps.aColorShaft[0] = GUI_TRANSPARENT;
                        pProps.aColorShaft[1] = GUI_TRANSPARENT;
                        pProps.ColorArrow = GUI_GRAY;
                        pProps.ColorGrasp = GUI_GRAY;
                        SCROLLBAR_SetSkinFlexProps(&pProps, SCROLLBAR_SKINFLEX_PI_UNPRESSED);
                        SCROLLBAR_SetSkinFlexProps(&pProps, SCROLLBAR_SKINFLEX_PI_PRESSED);
回复

使用道具 举报

2

主题

13

回帖

19

积分

新手上路

积分
19
 楼主| 发表于 2024-4-16 22:14:12 | 显示全部楼层
                        hscroll = SCROLLBAR_CreateAttached(hItem, GUI_ID_VSCROLL);                         SCROLLBAR_SetWidth(hscroll, 30);                         SCROLLBAR_GetSkinFlexProps(&pProps, SCROLLBAR_SKINFLEX_PI_UNPRESSED);                         pProps.aColorFrame[0] = GUI_TRANSPARENT;                         pProps.aColorFrame[1] = GUI_GRAY;                         pProps.aColorFrame[2] = GUI_TRANSPARENT;                         pProps.aColorUpper[0] = GUI_TRANSPARENT;                         pProps.aColorUpper[1] = GUI_TRANSPARENT;                         pProps.aColorLower[0] = GUI_TRANSPARENT;                         pProps.aColorLower[1] = GUI_TRANSPARENT;                         pProps.aColorShaft[0] = GUI_TRANSPARENT;                         pProps.aColorShaft[1] = GUI_TRANSPARENT;                         pProps.ColorArrow = GUI_GRAY;                         pProps.ColorGrasp = GUI_GRAY;                         SCROLLBAR_SetSkinFlexProps(&pProps, SCROLLBAR_SKINFLEX_PI_UNPRESSED);                         SCROLLBAR_SetSkinFlexProps(&pProps, SCROLLBAR_SKINFLEX_PI_PRESSED);
回复

使用道具 举报

2

主题

13

回帖

19

积分

新手上路

积分
19
 楼主| 发表于 2024-4-16 22:19:47 | 显示全部楼层

SCROLLBAR滚动条控件,点击一次向下箭头,会跑到最底部才会停止

emwin中SCROLLBAR滚动条控件,点击一次向下箭头,会跑到最底部才会停止,找不出原因,有人遇到过同样的问题吗?

我是在ICONVIEW控件添加的滚动条。

这是配置:
hscroll = SCROLLBAR_CreateAttached(hItem, GUI_ID_VSCROLL);
SCROLLBAR_SetWidth(hscroll, 30);
SCROLLBAR_GetSkinFlexProps(&pProps, SCROLLBAR_SKINFLEX_PI_UNPRESSED);
pProps.aColorFrame[0] = GUI_TRANSPARENT;
pProps.aColorFrame[1] = GUI_GRAY;
pProps.aColorFrame[2] = GUI_TRANSPARENT;
pProps.aColorUpper[0] = GUI_TRANSPARENT;
pProps.aColorUpper[1] = GUI_TRANSPARENT;
pProps.aColorLower[0] = GUI_TRANSPARENT;
pProps.aColorLower[1] = GUI_TRANSPARENT;
pProps.aColorShaft[0] = GUI_TRANSPARENT;
pProps.aColorShaft[1] = GUI_TRANSPARENT;
pProps.ColorArrow = GUI_GRAY;
pProps.ColorGrasp = GUI_GRAY;
SCROLLBAR_SetSkinFlexProps(&pProps, SCROLLBAR_SKINFLEX_PI_UNPRESSED);
SCROLLBAR_SetSkinFlexProps(&pProps, SCROLLBAR_SKINFLEX_PI_PRESSED);

回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106699
QQ
发表于 2024-4-17 08:13:52 | 显示全部楼层

添加了多少选项,添加100行试试效果。
回复

使用道具 举报

2

主题

13

回帖

19

积分

新手上路

积分
19
 楼主| 发表于 2024-4-17 09:14:17 | 显示全部楼层
eric2013 发表于 2024-4-17 08:13
添加了多少选项,添加100行试试效果。

原先是12行,我试了100行还是同样的效果
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106699
QQ
发表于 2024-4-17 09:59:45 | 显示全部楼层
sah 发表于 2024-4-17 09:14
原先是12行,我试了100行还是同样的效果

把你的皮肤色设置删掉,在模拟器上测试下是否正常。

是不是你的触摸没有正常释放导致的,点击后一直是按下状态。
回复

使用道具 举报

2

主题

13

回帖

19

积分

新手上路

积分
19
 楼主| 发表于 2024-4-17 13:15:10 | 显示全部楼层
eric2013 发表于 2024-4-17 09:59
把你的皮肤色设置删掉,在模拟器上测试下是否正常。

是不是你的触摸没有正常释放导致的,点击后一直是 ...

在模拟器上测试是正常的,鼠标点击向下箭头不会一直往下
回复

使用道具 举报

2

主题

13

回帖

19

积分

新手上路

积分
19
 楼主| 发表于 2024-4-17 13:21:34 | 显示全部楼层
eric2013 发表于 2024-4-17 09:59
把你的皮肤色设置删掉,在模拟器上测试下是否正常。

是不是你的触摸没有正常释放导致的,点击后一直是 ...

我在设备上去掉皮肤色设置还是不行
回复

使用道具 举报

2

主题

13

回帖

19

积分

新手上路

积分
19
 楼主| 发表于 2024-4-17 13:23:59 | 显示全部楼层
eric2013 发表于 2024-4-17 09:59
把你的皮肤色设置删掉,在模拟器上测试下是否正常。

是不是你的触摸没有正常释放导致的,点击后一直是 ...

我的回调函数里面没有滚动条相关触发的case,因为我是在ICONVIEW控件上直接加的滚动条
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106699
QQ
发表于 2024-4-18 09:02:50 | 显示全部楼层
sah 发表于 2024-4-17 13:23
我的回调函数里面没有滚动条相关触发的case,因为我是在ICONVIEW控件上直接加的滚动条

你用的是ICONView不是LISTView?

ICONVIEW的问题就比较多了,首先这个需要巨大的动态内存空间。
回复

使用道具 举报

2

主题

13

回帖

19

积分

新手上路

积分
19
 楼主| 发表于 2024-4-18 10:12:12 | 显示全部楼层
eric2013 发表于 2024-4-18 09:02
你用的是ICONView不是LISTView?

ICONVIEW的问题就比较多了,首先这个需要巨大的动态内存空间。

LISTView也是一样的效果,但是我用另外一个项目就不会出现这样的情况,两个项目代码我也比较了,是一样的。就是应该怎么判断我的触摸是否正常?我点击屏幕一切正常。
是这部分的代码吗?
int z_th = 10;
int old_x, old_y;
int Read_TouchPanel(int *x, int *y)
{
//return 0 fai;ure, 1 success.
    short adc_x, adc_y,z1,z2;
    if(pendown_complete!=0)
    {
        adcIoctl(START_MST_POLLING,0,0);
        adcReadXY(&adc_x,&adc_y,1);
        adcReadZ(&z1,&z2,1);
        if( ((inpw(REG_ADC_ZSORT0)&0xfff)<=z_th) ||
                ((inpw(REG_ADC_ZSORT1)&0xfff)<=z_th) ||
                ((inpw(REG_ADC_ZSORT2)&0xfff)<=z_th) ||
                ((inpw(REG_ADC_ZSORT3)&0xfff)<=z_th)    )
        {
            //sysprintf("0000000000000\n");
            pendown_complete=0;
            adcIoctl(PEPOWER_ON,0,0);
            *x = old_x;
            *y = old_y;
        }
        else
        {
            //*x = (XSIZE_PHYS * (adc_x)) / 4096;
            *x = adc_x;
            //*y = (YSIZE_PHYS * (4095-adc_y)) / 4096;
            *y = adc_y;
            old_x = *x;
            old_y = *y;
        }

        return 1;
    }
    else
    {
        *x = old_x;
        *y = old_y;
        return 0;
    }
}
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106699
QQ
发表于 2024-4-19 08:42:18 | 显示全部楼层
sah 发表于 2024-4-18 10:12
LISTView也是一样的效果,但是我用另外一个项目就不会出现这样的情况,两个项目代码我也比较了,是一样的 ...

可以这样测试,创建个按钮,看看能正常触发按钮的松手消息不。
回复

使用道具 举报

2

主题

13

回帖

19

积分

新手上路

积分
19
 楼主| 发表于 2024-4-19 08:55:09 | 显示全部楼层
eric2013 发表于 2024-4-19 08:42
可以这样测试,创建个按钮,看看能正常触发按钮的松手消息不。

可以的,button按钮的按下和释放是正常的,只要附加了滚动条的LISTVIEW和ICONVIEW都不行。但是按下滑动条中间的滑块,滚动是正常的。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106699
QQ
发表于 2024-4-20 09:04:43 | 显示全部楼层
sah 发表于 2024-4-19 08:55
可以的,button按钮的按下和释放是正常的,只要附加了滚动条的LISTVIEW和ICONVIEW都不行。但是按下滑动条 ...

别的看不出那里的问题了,你再找找。
回复

使用道具 举报

2

主题

13

回帖

19

积分

新手上路

积分
19
 楼主| 发表于 6 天前 | 显示全部楼层
eric2013 发表于 2024-4-20 09:04
别的看不出那里的问题了,你再找找。

会不会是控件本身的BUG啊
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106699
QQ
发表于 5 天前 | 显示全部楼层
sah 发表于 2024-4-24 15:56
会不会是控件本身的BUG啊


控件SCROLLBAR有bug概率很小。

排查下你的ICOVIEW内存给够没
回复

使用道具 举报

2

主题

13

回帖

19

积分

新手上路

积分
19
 楼主| 发表于 5 天前 | 显示全部楼层
eric2013 发表于 2024-4-25 09:05
控件SCROLLBAR有bug概率很小。

排查下你的ICOVIEW内存给够没

这个ICOVIEW内存怎么看?
回复

使用道具 举报

2

主题

13

回帖

19

积分

新手上路

积分
19
 楼主| 发表于 5 天前 | 显示全部楼层
eric2013 发表于 2024-4-25 09:05
控件SCROLLBAR有bug概率很小。

排查下你的ICOVIEW内存给够没


    hItem = WM_GetDialogItem(pMsg->hWin, ID_ICONVIEW_0);

    ICONVIEW_SetIconAlign(hItem, ICONVIEW_IA_TOP);
    ICONVIEW_SetTextColor(hItem, ICONVIEW_CI_UNSEL, GUI_WHITE);
    ICONVIEW_SetTextColor(hItem, ICONVIEW_CI_SEL, GUI_CYAN);
    ICONVIEW_SetFrame(hItem, GUI_COORD_X, 10);
    ICONVIEW_SetFrame(hItem, GUI_COORD_Y, 0);
    ICONVIEW_SetSpace(hItem, GUI_COORD_X, (650-550*1)/1);
    ICONVIEW_SetSpace(hItem, GUI_COORD_Y, (440-45*8)/2);
    ICONVIEW_SetFont(hItem, GUI_FONT_20_1);
    ICONVIEW_SetBkColor(hItem, ICONVIEW_CI_BK, GUI_BLACK);
    ICONVIEW_EnableStreamAuto();//新增加的函数
       
       



    #if 1
        for (i = 0; i < FM_PRESET_NUM; i++)
        {
//                ICONVIEW_AddBitmapItem(hItem, &bmfm_station_listview, (const char*)AppNvr_Getfmservicepreset(i));
                ICONVIEW_AddStreamedBitmapItem(hItem, &bmfm_station_listview, (const char*)AppNvr_Getfmservicepreset(i));//新增加的函数
        }


我增加了这两个函数可以了,但是流位图的图片不能显示,然后我更改了图片格式,虽然图片正常显示了,但是下键功能有何之前一样了。


回复

使用道具 举报

2

主题

13

回帖

19

积分

新手上路

积分
19
 楼主| 发表于 4 天前 | 显示全部楼层
eric2013 发表于 2024-4-25 09:05
控件SCROLLBAR有bug概率很小。

排查下你的ICOVIEW内存给够没

我发现不管是iconview 还是listview ,只要把图片去掉就正常了
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106699
QQ
发表于 3 天前 | 显示全部楼层
sah 发表于 2024-4-26 15:04
我发现不管是iconview 还是listview ,只要把图片去掉就正常了

早期我做的这个例子主界面就是ICONVIEW+滚动条

V1.2d版本 ,在小屏上展示就是正常滚动的,可供参考。

https://www.armbbs.cn/forum.php? ... &extra=page%3D1
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-4-30 09:18 , Processed in 0.503687 second(s), 26 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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