硬汉嵌入式论坛

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

[emWin] emwin创建左右滑动窗口,右滑有效,左滑无效。

[复制链接]

16

主题

18

回帖

66

积分

初级会员

积分
66
发表于 2025-9-5 15:23:23 | 显示全部楼层 |阅读模式

在主窗口中建了一个左右滑动的子窗口,下载后发现右滑可以滑动,右滑后就露出主界面了,左滑没有反应。理论上第一次不能右滑。这个是什么问题导致的?如何修改呢?谢谢!
断点到程序,pInfo->dx右滑值有变化,左滑值没有变化。

_CreateFrame(0,70,480*4,320,_cbMeasure);


static WM_HWIN _CreateFrame(I32 x0, I32 y0, I32 xSize, I32 ySize,WM_CALLBACK* cb)
{       

        _hLastFrame= WM_CreateWindowAsChild(x0, y0, xSize, ySize, hMainWin,WM_CF_SHOW | WM_CF_MOTION_X, cb, 0);
       
        return _hLastFrame;
}


case WM_MOTION:   
                pInfo = (WM_MOTION_INFO *)pMsg->Data.p;
                switch (pInfo->Cmd)
                {
                        case WM_MOTION_INIT:
                                //pInfo->Flags =  WM_CF_MOTION_X | WM_MOTION_MANAGE_BY_WINDOW;
                          pInfo->SnapX  = LCD_GetXSize();//pData->xSize;
                       
                          break;
                        case WM_MOTION_MOVE:
                               
                          x_offset=x_offset+pInfo->dx;
      
                          if (pInfo->FinalMove) {
                                //pData->HasStopped = 1;//移动停下了
                                 curPageIndex=((-pInfo->xPos)/LCD_GetXSize())%4;
                          }
                          WM_Invalidate(hWin);
                          break;
                    //case WM_MOTION_GETPOS:      
                          //pInfo->xPos = pData->xPos;
                          //break;
                }
                break;       


WM_HWIN CreateMainDialog(void) {
  
  hMainWin = GUI_CreateDialogBox(_aDialogCreate, GUI_COUNTOF(_aDialogCreate), _cbDialog, WM_HBKWIN, 0, 0);
  return hMainWin;
}



回复

使用道具 举报

16

主题

18

回帖

66

积分

初级会员

积分
66
 楼主| 发表于 2025-9-5 16:03:40 | 显示全部楼层
在左右滑动的界面每个界面创建了一个button,使用WM_MoveTo(hWin, 480, 70)也无法显示第2个button,现在只有第1个button能显示,是不是创建的4屏没有创建成功呢?谢谢!
_CreateButton(hWin, "1", GUI_ID_BUTTON3, 160, 60+115, 100,  60, 1);
_CreateButton(hWin, "2", GUI_ID_BUTTON4, 160+480, 60+115, 100,  60, 2);
_CreateButton(hWin, "3", GUI_ID_BUTTON5, 160+480*2, 60+115, 100,  60, 3);
_CreateButton(hWin, "4", GUI_ID_BUTTON6, 160+480*3, 60+115, 100,  60, 4);
回复

使用道具 举报

16

主题

18

回帖

66

积分

初级会员

积分
66
 楼主| 发表于 2025-9-5 16:53:09 | 显示全部楼层
使用WM_MoveTo(hWin, -480, 70)可以切换到第2个button,说明4个界面是创建成功了的,只是无法右滑。
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
118318
QQ
发表于 2025-9-6 10:26:45 | 显示全部楼层
这个是我之前做的窗口滑动实现,供参考,仅看maintask.c文件即可

【安富莱】F429开发板RTOS+emWin+FS+TCP/IP+USB+CAN+Modbus综合Demo已发布(2017-03-21)
https://forum.anfulai.cn/forum.p ... 7330&fromuid=58
(出处: 硬汉嵌入式论坛)
回复

使用道具 举报

16

主题

18

回帖

66

积分

初级会员

积分
66
 楼主| 发表于 2025-9-8 09:25:27 | 显示全部楼层
好的,谢谢!
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-9-26 11:58 , Processed in 0.043437 second(s), 24 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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