OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4063|回复: 4

SWIPELIST删除Item后Item位置自动对齐但附着在其上的小部件位置错乱

[复制链接]

18

主题

149

帖子

0

精华

高级会员

Rank: 4

积分
764
金钱
764
注册时间
2015-11-28
在线时间
208 小时
发表于 2020-4-3 14:05:36 | 显示全部楼层 |阅读模式
50金钱
SWIPELIST删除Item后Item位置自动对齐但附着在其上的小部件位置错乱如下图所示: Video_2020-04-03_080154[00-00-00--00-00-25].gif Video_2020-04-03_080918[00-00-26--00-00-56].gif
情况大概就是上面这两个GIF这样的情况,我简单的描述一下。
创建SWIPELIST的代码如下:
  1. hSwpParent = WM_CreateWindowAsChild(0, 0, xSize/2, ySize, WM_HBKWIN, WM_CF_SHOW | WM_CF_MEMDEV | WM_CF_HASTRANS, _cbParent, 0);
  2.         hSwpLst = SWIPELIST_CreateEx(1, 1, xSize / 2-40, ySize - 1, hSwpParent, WM_CF_SHOW | WM_CF_MOTION_Y | WM_CF_HASTRANS, 0, GUI_ID_SWIPELIST0);
  3.         //
  4.         //以下代码用来配置swipelist 的相关参数
  5.         //

  6.         SWIPELIST_AddSepItem(hSwpLst, "living room", 40);
  7.         SWIPELIST_SetBkColor(hSwpLst, SWIPELIST_CI_BK_SEP_ITEM,GUI_RED);
  8.         //SWIPELIST_SetBkColor(hSwpLst, SWIPELIST_CI_BK_ITEM_UNSEL, GUI_TRANSPARENT);
  9.         for (i = 0; i < 7; i++) {
  10.                 sprintf(text, "Room%d", i);
  11.                 SWIPELIST_AddItem(hSwpLst, (const char*)text, 40);
  12.                 //_ahText[i] = TEXT_CreateEx(0, 0, 50, 39, hSwpParent, WM_CF_SHOW, 0, USER_ID_TEXT + i, "3癈");
  13.                 //TEXT_SetTextAlign(_ahText[i], TEXT_CF_VCENTER | TEXT_CF_HCENTER);
  14.                 //TEXT_SetBkColor(_ahText[i], GUI_GRAY);
  15.                 //TEXT_SetFont(_ahText[i], GUI_FONT_16B_1);

  16.                 _ahText[i] = BUTTON_CreateEx(0, 0, 40, 20, hSwpParent, WM_CF_SHOW, 0, USER_ID_TEXT + i);
  17.                 BUTTON_SetBkColor(_ahText[i], BUTTON_CI_UNPRESSED, GUI_BLUE);
  18.                 SWIPELIST_ItemAttachWindow(hSwpLst, i + 1, _ahText[i], 138, 0);
  19.         }
  20.         hButton = BUTTON_CreateEx(203, 5, 35, 20, hSwpParent, WM_CF_SHOW | WM_CF_HASTRANS, 0, GUI_ID_BUTTON0);
  21.         BUTTON_SetText(hButton, "Del");
复制代码
创建了一个按钮当按钮松开的时候就SWIPLIST_DeleteItem()来删除一个Item这里固定删除的是ItemIndex为3的Item。
但是删除了Item后Item会自动对齐,附着在Item上的窗口却不会跟着Item一起对齐?我认为是删除后需要重绘窗口于是我就WM_InvalidateWindow了SwipeList的窗口和其父窗口发现并没有用,甚至我把每个附着的小窗口句柄都给记录下来并重绘这些附着小窗口但还是位置不正确。
我们知道当删除Item的时候其附着的小窗口也将被删除在发送重绘命令的时候也做了处理
  1. case WM_NOTIFICATION_RELEASED:
  2.                         switch (ID) {
  3.                         case GUI_ID_BUTTON0 :
  4.                                 hSwp = WM_GetDialogItem(pMsg->hWin, GUI_ID_SWIPELIST0);
  5.                                 SWIPELIST_DeleteItem(hSwp,3);

  6.                                 WM_InvalidateWindow(hSwpLst);
  7.                                 WM_InvalidateWindow(hSwpParent);
  8.                                 for (i = 0; i < 11; i++) {
  9.                                         if ((_ahText[i] != 0) && (WM_IsWindow(_ahText[i]))) {
  10.                                                 WM_InvalidateWindow(_ahText[i]);
  11.                                                 
  12.                                         }
  13.                                 }

  14.                                 break;
复制代码

但是 附着小窗口 位置不动的时候滑动一下SWIPELIST他窗口就正确了。但是超出屏幕的窗口又不能显示了。不知道是我哪里没有理解对。有大佬能指点一下么?



最佳答案

查看完整内容[请看2#楼]

解决了这个问题,如上图所示。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

18

主题

149

帖子

0

精华

高级会员

Rank: 4

积分
764
金钱
764
注册时间
2015-11-28
在线时间
208 小时
 楼主| 发表于 2020-4-3 14:05:37 | 显示全部楼层
Video_2020-04-17_231311[00-00-00--00-00-25].gif

解决了这个问题,如上图所示。
回复

使用道具 举报

18

主题

149

帖子

0

精华

高级会员

Rank: 4

积分
764
金钱
764
注册时间
2015-11-28
在线时间
208 小时
 楼主| 发表于 2020-4-3 14:06:43 | 显示全部楼层
后来我又想到了一种方法:删除Item后把所有“附着小窗口”都给Detach然后再重新附着上Item。立马安排上。 Video_2020-04-03_134805[00-00-00--00-00-21].gif

非常遗憾,并没有什么用。但有一点就是删除Item后“附着窗口”能够跟随Item移动。但之前没有在屏幕内的“附着窗口”仍然不会显示出来。可能这个是STemWin的Bug吧?
回复

使用道具 举报

18

主题

149

帖子

0

精华

高级会员

Rank: 4

积分
764
金钱
764
注册时间
2015-11-28
在线时间
208 小时
 楼主| 发表于 2020-4-7 07:40:00 | 显示全部楼层
没有人研究过这个控件么?
回复

使用道具 举报

3

主题

7

帖子

0

精华

新手上路

积分
47
金钱
47
注册时间
2019-12-30
在线时间
11 小时
发表于 2020-5-14 14:56:42 | 显示全部楼层
删除项目的时候从最后一个开始删除,不然删除了0,1就变成了0项目
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-22 15:29

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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