硬汉嵌入式论坛

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

怎样实现画一个按钮及完成简单功能

  [复制链接]

6

主题

30

回帖

48

积分

新手上路

积分
48
发表于 2018-7-8 17:35:33 | 显示全部楼层 |阅读模式
在触摸屏上画一个按钮就是调用画矩形框函数吗?还有怎么实现按下这个按钮就清下屏的功能呢?
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117538
QQ
发表于 2018-7-9 02:33:14 | 显示全部楼层
如果用的是我们V6开发板,推荐直接学习新版emWin教程即可,很好上手的,基本2-3天就可以做基本操作了。

使用中有什么问题,随时找我。

https://forum.anfulai.cn/forum.p ... &extra=page%3D1
回复

使用道具 举报

6

主题

30

回帖

48

积分

新手上路

积分
48
 楼主| 发表于 2018-7-10 16:31:17 | 显示全部楼层
eric2013 发表于 2018-7-9 02:33
如果用的是我们V6开发板,推荐直接学习新版emWin教程即可,很好上手的,基本2-3天就可以做基本操作了。

...

请问,emwin必须在有os的工程里使用吗?用它生成多级菜单容易吗?
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117538
QQ
发表于 2018-7-10 17:00:34 | 显示全部楼层
lyw760216 发表于 2018-7-10 16:31
请问,emwin必须在有os的工程里使用吗?用它生成多级菜单容易吗?

不用的,裸机的就行,看此贴,例子都是裸机和OS两个版本

https://forum.anfulai.cn/forum.p ... &extra=page%3D1
回复

使用道具 举报

6

主题

30

回帖

48

积分

新手上路

积分
48
 楼主| 发表于 2018-7-13 11:13:47 | 显示全部楼层
用emwin画了下拉菜单列表,但怎么实现菜单选项和相关执行程序的关联不清楚,请赐教!
回复

使用道具 举报

6

主题

30

回帖

48

积分

新手上路

积分
48
 楼主| 发表于 2018-7-13 11:15:16 | 显示全部楼层
eric2013 发表于 2018-7-10 17:00
不用的,裸机的就行,看此贴,例子都是裸机和OS两个版本

https://forum.anfulai.cn/forum.php?mod=view ...

用emwin画了下拉菜单列表,但怎么实现菜单选项和相关执行程序的关联不清楚,请赐教!
回复

使用道具 举报

6

主题

30

回帖

48

积分

新手上路

积分
48
 楼主| 发表于 2018-7-29 12:31:34 | 显示全部楼层
请教,用emwin做的一个下拉菜单怎么可以点击后让它向上展开呢?因为该菜单正好位于显示屏底部,向下展开就看不到了😭
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117538
QQ
发表于 2018-7-30 00:52:47 | 显示全部楼层
lyw760216 发表于 2018-7-29 12:31
请教,用emwin做的一个下拉菜单怎么可以点击后让它向上展开呢?因为该菜单正好位于显示屏底部,向下展开就 ...

Menu控件吗,这个控件不行,浏览了下API列表,没有发现支持的函数。
回复

使用道具 举报

6

主题

30

回帖

48

积分

新手上路

积分
48
 楼主| 发表于 2018-7-30 10:44:04 | 显示全部楼层
是dropdown 控件
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117538
QQ
发表于 2018-7-30 10:45:13 | 显示全部楼层

这个支持。
QQ截图20180730104609.png
回复

使用道具 举报

6

主题

30

回帖

48

积分

新手上路

积分
48
 楼主| 发表于 2018-7-30 11:05:40 | 显示全部楼层
非常感谢!
回复

使用道具 举报

6

主题

30

回帖

48

积分

新手上路

积分
48
 楼主| 发表于 2018-7-30 16:02:21 | 显示全部楼层

再请教个问题,我利用V6开发板的一个下拉列表例程自己做了几个下拉列表和按钮的对话框。对话框尺寸只有LCD屏的一半,这时对话框显示很好,但框外面的显示就是乱条纹了,而我如果在主程序里先初始化下LCD(LCD_InitHard ()),其余不变,结果屏幕上对话框就没有了,这是个什么原因啊?
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117538
QQ
发表于 2018-7-30 17:32:32 | 显示全部楼层
lyw760216 发表于 2018-7-30 16:02
再请教个问题,我利用V6开发板的一个下拉列表例程自己做了几个下拉列表和按钮的对话框。对话框尺寸只有LC ...

桌面窗口你要做个自动重绘,你不做就会是随机值。

简单些,你可以GUI_Init后调用函数WM_SetDesktopColor(),这个函数可以自动执行重绘。
回复

使用道具 举报

6

主题

30

回帖

48

积分

新手上路

积分
48
 楼主| 发表于 2018-7-31 08:37:02 | 显示全部楼层
eric2013 发表于 2018-7-30 17:32
桌面窗口你要做个自动重绘,你不做就会是随机值。

简单些,你可以GUI_Init后调用函数WM_SetDesktopCol ...

问题解决,谢谢!
回复

使用道具 举报

6

主题

30

回帖

48

积分

新手上路

积分
48
 楼主| 发表于 2018-7-31 14:19:28 | 显示全部楼层
再请教,还是在emWin的下拉列表例程基础上画了个包含几个按钮按钮的对话框。并还写了段在对话框外,在一个指定的矩形框内显示文本的程序。结果运行,对话框在,矩形框及里面文本没啦。如去掉对话框功能及最后一段while(1)延时程序,运行,矩形框及文本就出现了。这是什么原因呢?怎么才能让它们同时出现在屏幕上呢?
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117538
QQ
发表于 2018-7-31 15:42:20 | 显示全部楼层
lyw760216 发表于 2018-7-31 14:19
再请教,还是在emWin的下拉列表例程基础上画了个包含几个按钮按钮的对话框。并还写了段在对话框外,在一个 ...

这个应该是你的程序问题了,方便的话,看下你的测试程序。
回复

使用道具 举报

6

主题

30

回帖

48

积分

新手上路

积分
48
 楼主| 发表于 2018-8-1 08:27:55 | 显示全部楼层
eric2013 发表于 2018-7-31 15:42
这个应该是你的程序问题了,方便的话,看下你的测试程序。

是因为上次加了个WM_SetDesktopColor(),造成了两个不能同时显示,去掉这个函数就oK了!谢谢!
回复

使用道具 举报

6

主题

30

回帖

48

积分

新手上路

积分
48
 楼主| 发表于 2018-8-3 15:44:43 | 显示全部楼层
老师,还是在上面例程的基础上写了个串口通信的程序,其中在对话框内做了两个按钮控件,一个叫开串口一个叫关串口,分別用函数USART_Cmd(USART1,ENABLE)/DISABLE来实现,但发现当按下关串口后再按发送数据(用printf()实现)按钮,整个对话框内控件就都失效了,这时只有重启才可以。不知为什么会这样?
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117538
QQ
发表于 2018-8-4 00:25:30 | 显示全部楼层
lyw760216 发表于 2018-8-3 15:44
老师,还是在上面例程的基础上写了个串口通信的程序,其中在对话框内做了两个按钮控件,一个叫开串口一个叫 ...

禁止后,不要禁止再调用串口相关的API ,再调用会卡死。你的printf串口底层接口应该是死掉方式实现的。所以会卡死。
回复

使用道具 举报

6

主题

30

回帖

48

积分

新手上路

积分
48
 楼主| 发表于 2018-8-4 09:07:12 | 显示全部楼层
eric2013 发表于 2018-8-4 00:25
禁止后,不要禁止再调用串口相关的API ,再调用会卡死。你的printf串口底层接口应该是死掉方式实现的。所 ...

那有什么解决办法吗?
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117538
QQ
发表于 2018-8-4 10:31:35 | 显示全部楼层
lyw760216 发表于 2018-8-4 09:07
那有什么解决办法吗?

设置个全局变量做标识就好了。
回复

使用道具 举报

6

主题

30

回帖

48

积分

新手上路

积分
48
 楼主| 发表于 2018-8-4 13:01:31 | 显示全部楼层
eric2013 发表于 2018-8-4 10:31
设置个全局变量做标识就好了。

能再详细一点点吗?
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117538
QQ
发表于 2018-8-4 13:10:01 | 显示全部楼层
lyw760216 发表于 2018-8-4 13:01
能再详细一点点吗?

你用这个全局变量和printf封装一个新的打印函数,这样在关闭后就不会调用printf了。
回复

使用道具 举报

6

主题

30

回帖

48

积分

新手上路

积分
48
 楼主| 发表于 2018-8-6 13:49:36 | 显示全部楼层
另一问题,我用GUI_DispStringInRectWrap ()在指定矩形框内显示字符,由于字符不断输入,当填满矩形框后,我却怎么也实现不了清框并从头开始继续显示,请问该怎么操作呢?
回复

使用道具 举报

6

主题

30

回帖

48

积分

新手上路

积分
48
 楼主| 发表于 2018-8-6 14:12:11 | 显示全部楼层
问题已解决,把矩形框和字体颜色再重定义一遍就ok了
回复

使用道具 举报

6

主题

30

回帖

48

积分

新手上路

积分
48
 楼主| 发表于 2018-8-8 14:13:58 | 显示全部楼层
请教例程中串口通信协议里数据位项只定义了两种,8位和9位的。如果我要增加5、6、7几个选择,我该怎么改程序呢?在工程里它的原程序是这样的,#define USART_WordLength_8b ((uint16_t)0x0000)
           #define  USART_WordLength_9b ((uint16_t)0x1000)
           #define  IS_USART_WORD_LENGTH (LENGTH)(((LENGTH)==......||......)
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-8-13 15:31 , Processed in 0.056523 second(s), 27 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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