硬汉嵌入式论坛

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

[emWin] EMWIN 关于LISTVIEW请教

[复制链接]

4

主题

6

回帖

18

积分

新手上路

积分
18
发表于 2021-7-20 09:20:53 | 显示全部楼层 |阅读模式

各位大佬,现在想在EMWIN的LISTVIEW控件里面做一项处理

当操作滑动条的时候,前几列固定不动。
现在做的以下操作:
        LISTVIEW_SetFixed(listview0_hWin, 1);
        LISTVIEW_SetFixed(listview0_hWin, 2);
        LISTVIEW_SetFixed(listview0_hWin, 3);
        LISTVIEW_SetFixed(listview0_hWin, 4);
        LISTVIEW_SetFixed(listview0_hWin, 5);
        LISTVIEW_SetFixed(listview0_hWin, 6);
        LISTVIEW_SetFixed(listview0_hWin, 7);
        HEADER_SetFixed(LISTVIEW_GetHeader(listview0_hWin),0);



         实际现象是前7列不动,但是表头会跟着动作,没做到想要的效果

         HEADER_SetFixed()这个API没找到具体的说明


另外,上次单个单元格显示问题已经解决谢谢大佬们!!!!
回复

使用道具 举报

3

主题

423

回帖

432

积分

高级会员

积分
432
发表于 2021-7-20 13:15:55 | 显示全部楼层
在API函数LISTVIEW_SetFixed(hObj, NumOfFixed)中,NumOfFixed是列数,不是列索引。HEADER_SetFixed也差不多。所以你的代码HEADER_SetFixed(LISTVIEW_GetHeader(listview0_hWin),0);
把header的固定列设置为0是不对的啊。
而且根据源码,LISTVIEW_SetFixed会自动调用HEADER_SetFixed,不用你多余的调用:

  1. unsigned LISTVIEW_SetFixed(LISTVIEW_Handle hObj, unsigned Fixed) {
  2.   unsigned FixedOld = 0;
  3.   if (hObj) {
  4.     LISTVIEW_Obj * pObj;
  5.     WM_LOCK();
  6.     pObj = LISTVIEW_LOCK_H(hObj);
  7.     FixedOld = pObj->Fixed;
  8.     if (Fixed != FixedOld) {
  9.       pObj->Fixed = Fixed;
  10.       if (pObj->hHeader) {
  11.         HEADER_SetFixed(pObj->hHeader, Fixed);
  12.       }
  13.       LISTVIEW__InvalidateInsideArea(hObj);
  14.     }
  15.     GUI_UNLOCK_H(pObj);
  16.     WM_UNLOCK();
  17.   }
  18.   return FixedOld;
  19. }
复制代码
  1. unsigned HEADER_SetFixed(HEADER_Handle hObj, unsigned Fixed) {
  2.   unsigned FixedOld = 0;
  3.   if (hObj) {
  4.     HEADER_Obj* pObj;
  5.     WM_LOCK();
  6.     pObj = HEADER_LOCK_H(hObj);
  7.     FixedOld = pObj->Fixed;
  8.     if (Fixed != FixedOld) {
  9.       pObj->Fixed = Fixed;
  10.       WM_Invalidate(hObj);
  11.     }
  12.     GUI_UNLOCK_H(pObj);
  13.     WM_UNLOCK();
  14.   }
  15.   return FixedOld;
  16. }
复制代码




回复

使用道具 举报

4

主题

6

回帖

18

积分

新手上路

积分
18
 楼主| 发表于 2021-7-20 18:53:04 | 显示全部楼层
glory 发表于 2021-7-20 13:15
在API函数LISTVIEW_SetFixed(hObj, NumOfFixed)中,NumOfFixed是列数,不是列索引。HEADER_SetFixed也差不 ...

如果只调用LISTVIEW_SetFixed(hObj, NumOfFixed)这个API的话,表头文件再滑动的时候会乱行;
我加上HEADER_SetFixed(LISTVIEW_GetHeader(listview0_hWin),0);
这句话表头就会跟着滑动了,而且参数只能为0时才可以,其他的都没有什么效果区别
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-5-21 00:26 , Processed in 0.287323 second(s), 22 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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