硬汉嵌入式论坛

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

[emWin] emwin滑动

[复制链接]

1

主题

4

回帖

7

积分

新手上路

积分
7
发表于 2025-7-18 10:30:56 | 显示全部楼层 |阅读模式
小弟最近在用emwin做一个参数配置界面,里面有数据、有使能,只用listview组件的话效果不是很好,想在左边放一些下拉框之类的控件。想问一下有没有一种上下滑动屏幕移动屏幕中所有的控件的方法。
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
118341
QQ
发表于 2025-7-18 16:52:06 | 显示全部楼层
推荐使用6.22及其以上版本,支持滑动了。

emWin6.22模拟器发布,Dropdown,listbox,listview和multiedit控件都已经支持滑动操作(2021-11-24)
https://forum.anfulai.cn/forum.p ... 9736&fromuid=58
(出处: 硬汉嵌入式论坛)
回复

使用道具 举报

1

主题

4

回帖

7

积分

新手上路

积分
7
 楼主| 发表于 2025-8-12 10:07:32 | 显示全部楼层
eric2013 发表于 2025-7-18 16:52
推荐使用6.22及其以上版本,支持滑动了。

emWin6.22模拟器发布,Dropdown,listbox,listview和multiedi ...

哥有个问题想打扰你一下,我在重新填充listview的内容时,listview内容有概率显示错误,但是发送keymessage选中行,选中后的行会正确显示。试了好多方法都没法解决,下面是填充listview内容的代码,问题出现在PAGE_TYPE_MENU类型的内容填充上
[C] 纯文本查看 复制代码
void SCREEN_Switch(LISTVIEW_Handle listview,WM_HWIN hWin)
{
  WM_EnableMemdev(hWin);
  LISTVIEW_DeleteAllRows(listview);
  switch(Lcd_Obj.run.frm[Lcd_Obj.run.page_idx].type)
  { 
    case PAGE_TYPE_MENU:;
      struct LCD_LINE_ITEM_TYPE *pItem;
      pItem = Lcd_Obj.run.frm[Lcd_Obj.run.page_idx].data;
      LISTVIEW_DeleteColumn(listview,1);
      LISTVIEW_DeleteColumn(listview,0);
      LISTVIEW_AddColumn(listview,320,NULL,GUI_ALIGN_LEFT|GUI_ALIGN_VCENTER);
      for(int i=0;i<Lcd_Obj.run.frm[Lcd_Obj.run.page_idx].row;i++)
      {
        LISTVIEW_AddRow(listview,NULL);
        LISTVIEW_SetItemText(listview,0,i,pItem[i].base.dp.msg[LCD_LANG_EN]);
        //printf("add row %s\r\n",pItem[i].base.dp.msg[LCD_LANG_EN]);
      }
      break;
    case PAGE_TYPE_INFO:;
      struct LCD_LINE_DATA_TYPE *pData;
      pData = Lcd_Obj.run.frm[Lcd_Obj.run.page_idx].data;
      LISTVIEW_DeleteColumn(listview,0);
      LISTVIEW_AddColumn(listview,LISTVIEW_CONTENT_WIDTH,NULL,GUI_ALIGN_LEFT|GUI_ALIGN_VCENTER);
      LISTVIEW_AddColumn(listview,LISTVIEW_DATA_WIDTH,NULL,GUI_ALIGN_HCENTER|GUI_ALIGN_VCENTER);
      for(int i=0;i<Lcd_Obj.run.frm[Lcd_Obj.run.page_idx].row;i++)
      {
        LISTVIEW_AddRow(listview,NULL);
        LISTVIEW_SetItemText(listview,0,i,pData[i].base.dgp.msg[LCD_LANG_EN]);
      }
      fill_listview_data(listview);
      break; 
  }
  LISTVIEW_SetSel(listview,-1);
  LISTVIEW_SetRowHeight(listview,LISTVIEW_ROW_HEIGHT+1);
  LISTVIEW_SetRowHeight(listview,LISTVIEW_ROW_HEIGHT);
  //GUI_Delay(100);
  //WM_SetFocus(listview);
  WM_InvalidateWindow(hWin);
  WM_Update(hWin);
  printf("SCREEN_Switch page index:%d\r\n",Lcd_Obj.run.page_idx);
}

回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-9-27 12:14 , Processed in 0.041819 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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