硬汉嵌入式论坛

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

[emWin] 求助emwin窗口滑动方案

[复制链接]

19

主题

310

回帖

367

积分

高级会员

积分
367
发表于 2023-11-23 09:11:02 | 显示全部楼层 |阅读模式
大家好,最近有个需求,就是在小界面上做窗口滑动
因为历史原因,可能需要用到emwin的GUI

说明:
界面很小,240x240,有多个界面

界面A显示几个文字、波形、按钮,
界面B是另外的文字、波形、按钮,
界面C是设置菜单,
界面D是其他菜单

需求:
界面A滑动到界面B,需要能看到过渡动画,其他的界面切换也是一样

问:
1、是否可以实现这样的操作?怎么弄?有没有参考的方案?
2、界面A滑到界面B,如果界面B再滑回界面A,是反方向滑动好处理,还是统一一个方向循环滑动好?






回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106856
QQ
发表于 2023-11-23 09:47:37 | 显示全部楼层
没问题,emWin有个Mothon组件,专门做滑动使用的。

这个里面例子的MainTask.c有对应的使用,帖子里面也有个视频效果展示。
https://www.armbbs.cn/forum.php? ... &extra=page%3D1
回复

使用道具 举报

19

主题

310

回帖

367

积分

高级会员

积分
367
 楼主| 发表于 2023-11-23 10:23:38 | 显示全部楼层
eric2013 发表于 2023-11-23 09:47
没问题,emWin有个Mothon组件,专门做滑动使用的。

这个里面例子的MainTask.c有对应的使用,帖子里面也 ...

谢谢版主,我看到过,
请教下这个mothon组件,里面可以叠加FrameWIN吗?
可以的话,我把波形、按钮、文字都放在Framewin里面
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106856
QQ
发表于 2023-11-23 10:49:56 | 显示全部楼层
hpxzw_foxmai 发表于 2023-11-23 10:23
谢谢版主,我看到过,
请教下这个mothon组件,里面可以叠加FrameWIN吗?
可以的话,我把波形、按钮、文 ...

推荐用对话框,对话框的主体窗口使用Window
回复

使用道具 举报

19

主题

310

回帖

367

积分

高级会员

积分
367
 楼主| 发表于 2023-11-23 11:22:38 | 显示全部楼层
eric2013 发表于 2023-11-23 10:49
推荐用对话框,对话框的主体窗口使用Window

版主,我们之前的控件,都是在framewin里面弄的,涉及到皮肤、动态设置里面小framewin的大小、位置,等等,如果可以framewin的话,那就会方便很多
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106856
QQ
发表于 2023-11-23 14:13:27 | 显示全部楼层
hpxzw_foxmai 发表于 2023-11-23 11:22
版主,我们之前的控件,都是在framewin里面弄的,涉及到皮肤、动态设置里面小framewin的大小、位置,等等 ...

也可以,对话框主体窗口使用FrameWin。
回复

使用道具 举报

19

主题

310

回帖

367

积分

高级会员

积分
367
 楼主| 发表于 2023-11-23 14:54:58 | 显示全部楼层
eric2013 发表于 2023-11-23 14:13
也可以,对话框主体窗口使用FrameWin。

谢谢版主,我研究下
回复

使用道具 举报

19

主题

310

回帖

367

积分

高级会员

积分
367
 楼主| 发表于 2023-12-6 18:52:40 | 显示全部楼层
eric2013 发表于 2023-11-23 14:13
也可以,对话框主体窗口使用FrameWin。





test.png

版主,请教一下,
假设全屏分辨率320x320
全屏界面1  : 2个FRAMEWIN 上面framewin1是显示ABCD,下面framewin2是显示EE


全屏界面2: 1个FRAMEWIN 显示一个方形

请问我怎么做到可以滑动时,界面显示像图3的效果,
全屏界面1显示60% 全屏界面2显示40%(可能比例不太准,差不多的效果就行)

版主能做一个小的例程,搞个maintask文件,让我在上位机看看吗?


回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106856
QQ
发表于 2023-12-7 08:37:27 | 显示全部楼层
hpxzw_foxmai 发表于 2023-12-6 18:52
版主,请教一下,
假设全屏分辨率320x320
全屏界面1  : 2个FRAMEWIN 上面framewin1是显示 ...

之前分享的那个基于motion的方案是不是不太顺手,试试简单的方案。

方案1:界面1先显示一个窗口,窗口有个WM_TOUCH消息,在这个消息里面,你可以获取按下时的坐标位置,然后你移动后,就会可以在这消息里面获取新的坐标位置,然后调用函数WM_MoveTO就可以移动窗口到新的位置。

方案2:继续用motion方案,这个有个简单的例子,此贴:
Motion demo
https://www.armbbs.cn/forum.php?mod=viewthread&tid=5702
回复

使用道具 举报

19

主题

310

回帖

367

积分

高级会员

积分
367
 楼主| 发表于 2023-12-7 09:15:54 | 显示全部楼层
eric2013 发表于 2023-12-7 08:37
之前分享的那个基于motion的方案是不是不太顺手,试试简单的方案。

方案1:界面1先显示一个窗口,窗口 ...

非常感谢
回复

使用道具 举报

19

主题

310

回帖

367

积分

高级会员

积分
367
 楼主| 发表于 2023-12-7 17:33:25 | 显示全部楼层
eric2013 发表于 2023-12-7 08:37
之前分享的那个基于motion的方案是不是不太顺手,试试简单的方案。

方案1:界面1先显示一个窗口,窗口 ...

谢谢版主
我准备创建几个子窗口,然后使用全屏触摸算法,计算按下过程中的触摸坐标,然后定时几十ms更新一次偏移值,然后发消息给主窗口
主窗口调用
WM_MoveWindow(hWin_child0, dx, 0);
可以一次移动所有的窗口,这样就可以做到一起移动
现在在电脑上没有问题,后面看看在开发板上卡不卡
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106856
QQ
发表于 2023-12-8 10:02:54 | 显示全部楼层
hpxzw_foxmai 发表于 2023-12-7 17:33
谢谢版主
我准备创建几个子窗口,然后使用全屏触摸算法,计算按下过程中的触摸坐标,然后定时几十ms更新 ...

也行,其实用WM_TOUCH消息里面获取更方便,不用定时轮询了。
回复

使用道具 举报

19

主题

310

回帖

367

积分

高级会员

积分
367
 楼主| 发表于 2023-12-11 12:13:39 | 显示全部楼层
eric2013 发表于 2023-12-8 10:02
也行,其实用WM_TOUCH消息里面获取更方便,不用定时轮询了。

因为每个界面有很多个小的framewin,滑动的时候,是整体滑动,
在TOUCH消息里面处理,可能比较分散,反而不太好处理
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-7 17:57 , Processed in 0.361042 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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