硬汉嵌入式论坛

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

[emWin实战篇] 第6期:智能家居界面设计

  [复制链接]

740

主题

1326

回帖

3546

积分

管理员

春暖花开

Rank: 9Rank: 9Rank: 9

积分
3546
QQ
发表于 2014-12-13 14:42:31 | 显示全部楼层 |阅读模式
第6期:智能家居界面设计
工程下载:

第66期:智能家居界面设计.zip (10.6 MB, 下载次数: 3585)

工程介绍:
1.  提供了一个完整的ICOVIEW控件的使用方案。
2.  本实例有两个个值得大家学习的地方:     
    (1). ICONVIEW控件的使用。   
    (2). 所有界面支持触摸也支持按键操作。
3.  按键K2实现对话框的删除。     
     按键K3实现ICONVIEW的聚焦。   
     摇杆UP键实现ICONVIEW选项的上移。     
     摇杆DOWN键实现ICONVIEW选项的下移。     
     摇杆LIGHT键实现ICONVIEW选项的左移。   
     摇杆RIGHT键实现ICONVIEW选项的右移。     
     摇杆OK键实现对话框的创建。
截图效果:


超高清视频演示:

努力打造安富莱高质量微信公众号:点击扫描图片关注
回复

使用道具 举报

5

主题

109

回帖

124

积分

初级会员

积分
124
发表于 2016-9-20 20:39:36 | 显示全部楼层
[s:151] 不错,很有参考价值
回复

使用道具 举报

0

主题

2

回帖

2

积分

新手上路

积分
2
发表于 2016-11-24 14:12:10 | 显示全部楼层
专门注册了个账号来表支持的
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106833
QQ
发表于 2016-11-25 11:03:04 | 显示全部楼层

回 ghost812 的帖子

ghost812:专门注册了个账号来表支持的 (2016-11-24 14:12) 
[s:142]
回复

使用道具 举报

262

主题

578

回帖

1364

积分

至尊会员

积分
1364
发表于 2017-6-2 09:21:27 | 显示全部楼层

回 eric2013 的帖子

eric2013:[s:142] (2016-11-25 11:03) 
这个只有一个页面上有时间的啊
其他页面都没有显示时间呀
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106833
QQ
发表于 2017-6-2 10:26:11 | 显示全部楼层

回 jplzl10000 的帖子

jplzl10000:这个只有一个页面上有时间的啊
其他页面都没有显示时间呀 (2017-06-02 09:21) 
那就那个界面上面需要,那个界面单独添加下,不是也挺方便的吗。
回复

使用道具 举报

262

主题

578

回帖

1364

积分

至尊会员

积分
1364
发表于 2017-6-2 10:36:23 | 显示全部楼层

回 eric2013 的帖子

eric2013:那就那个界面上面需要,那个界面单独添加下,不是也挺方便的吗。 (2017-06-02 10:26) 
有什么方便的方法么?
页面一变动的话,那个定时器的WM_TIMER消息接收页面句柄也要跟着变化呀。
而且,关闭新页面,返回旧页面时,这个旧页面的句柄还不能自动更新,需要手动维护啊
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106833
QQ
发表于 2017-6-2 10:38:44 | 显示全部楼层

回 jplzl10000 的帖子

jplzl10000:有什么方便的方法么?
页面一变动的话,那个定时器的WM_TIMER消息接收页面句柄也要跟着变化呀。
而且,关闭新页面,返回旧页面时,这个旧页面的句柄还不能自动更新,需要手动维护啊
 (2017-06-02 10:36) 
不用的,也用不到句柄,是将定时器创建到窗口或者对话框上面,在窗口或者对话框回调函数的定时器消息里面实现时间更新。都是自动的,不用用户去维护。
回复

使用道具 举报

262

主题

578

回帖

1364

积分

至尊会员

积分
1364
发表于 2017-6-2 13:35:18 | 显示全部楼层

回 eric2013 的帖子

eric2013:不用的,也用不到句柄,是将定时器创建到窗口或者对话框上面,在窗口或者对话框回调函数的定时器消息里面实现时间更新。都是自动的,不用用户去维护。 (2017-06-02 10:38) 
"将定时器创建到窗口或者对话框上面"
这是什么意思呀?
我是在页面的WM_INIT_DIALOG消息里面调用WM_CreateTimer(hWin,WM_TIMER,1000,0);
来创建的,这个函数里面第1个参数不就是接收WM_TIMER消息的句柄么。
怎么说用不到句柄呢?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106833
QQ
发表于 2017-6-2 14:13:44 | 显示全部楼层

回 jplzl10000 的帖子

jplzl10000:"将定时器创建到窗口或者对话框上面"
这是什么意思呀?
我是在页面的WM_INIT_DIALOG消息里面调用WM_CreateTimer(hWin,WM_TIMER,1000,0);
来创建的,这个函数里面第1个参数不就是接收WM_TIMER消息的句柄么。
....... (2017-06-02 13:35) 
你操作下就明白了,很简单的,试试看。
回复

使用道具 举报

262

主题

578

回帖

1364

积分

至尊会员

积分
1364
发表于 2017-6-2 14:51:53 | 显示全部楼层

回 eric2013 的帖子

eric2013:你操作下就明白了,很简单的,试试看。 (2017-06-02 14:13) 
现在就是操作了,但是达不到想要的效果啊。
我试着在两个页面创建的时候都创建一个TIMER,并且不把老页面下的TIMER给删除或停掉,
结果就是时间1秒中,显示就跳成2s显示
回复

使用道具 举报

262

主题

578

回帖

1364

积分

至尊会员

积分
1364
发表于 2017-6-2 15:06:06 | 显示全部楼层

回 eric2013 的帖子

eric2013:你操作下就明白了,很简单的,试试看。 (2017-06-02 14:13) 
调用WM_CreateTimer(hWin,WM_TIMER,1000,0);时,把这个hWind参数用时间TEXT窗口句柄赋值时,在页面的回调函数里都没有WM_TIMER消息产生了。是发送到TEXT的回调函数里了?
回复

使用道具 举报

262

主题

578

回帖

1364

积分

至尊会员

积分
1364
发表于 2017-6-2 15:37:18 | 显示全部楼层

回 eric2013 的帖子

eric2013:不用的,也用不到句柄,是将定时器创建到窗口或者对话框上面,在窗口或者对话框回调函数的定时器消息里面实现时间更新。都是自动的,不用用户去维护。 (2017-06-02 10:38) 
“不用的,也用不到句柄”

你这句是怎么说的呢,刚又看了一下新版的文档(和旧的文档在这一块没什么大区别)
在创建TIMER时也是要有消息接收句柄的呀,怎么说不用呢
一般用的话,也只能是创建到页面窗口上,不会创建到一个TEXT或是EDIT这样的小控件上去。
因为只能在窗口回调里面接收,如果创建一个TIMER到TEXT的窗口上的话,那这个TEXT的回调函数还得自己去维护,更加麻烦了
回复

使用道具 举报

4

主题

16

回帖

76

积分

初级会员

积分
76
发表于 2018-3-9 09:21:50 | 显示全部楼层
这个有没有教程之类的呢,只有源码么?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106833
QQ
发表于 2018-3-9 12:57:25 | 显示全部楼层
17854117512 发表于 2018-3-9 09:21
这个有没有教程之类的呢,只有源码么?

综合例程不做教程了,太辛苦。建议学习我们的新版emWin教程后再看会好些。
回复

使用道具 举报

4

主题

16

回帖

76

积分

初级会员

积分
76
发表于 2018-3-11 13:24:40 | 显示全部楼层
eric2013 发表于 2018-3-9 12:57
综合例程不做教程了,太辛苦。建议学习我们的新版emWin教程后再看会好些。

你好,这些case我就知道三个,其他的是什么意思,自己创建的么?
回复

使用道具 举报

4

主题

16

回帖

76

积分

初级会员

积分
76
发表于 2018-3-11 13:25:19 | 显示全部楼层
case WM_PAINT:
                        GUI_DrawGradientH(0, 44, 240- 1, 272 - 44, 0xdda0dd, 0xe14169);
                    GUI_DrawGradientH(240, 44, 480-1, 272-44, 0xe14169, 0xdda0dd);
                       
                        GUI_DrawBitmap(&bmButtonLine, 0, 272-44);
                    GUI_DrawBitmap(&bmTopLine, 0, 0);
                        break;
               
                case WM_INIT_DIALOG:  //窗口初始化
                        /* 创建文本 */
                        hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_0);
                        TEXT_SetTextColor(hItem, GUI_WHITE);
                        TEXT_SetFont(hItem, &GUI_FontYahei);
                        TEXT_SetText(hItem, "智能家居STemWin客户端");

                        hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_9);
                        TEXT_SetFont(hItem, GUI_FONT_16B_ASCII);
                        TEXT_SetTextColor(hItem, 0x00FFFFFF);
                        TEXT_SetText(hItem, "2014-06-17");
                       
                        hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_10);
                        TEXT_SetFont(hItem, GUI_FONT_16B_ASCII);
                        TEXT_SetTextColor(hItem, 0x00FFFFFF);
                        TEXT_SetText(hItem, "00:00:00");
                        break;
                       
                case WM_TIMER:
                        /* 显示时间和日期 */
                        Caculate_RTC(pMsg);
                        /* 重启定时器 */
                        WM_RestartTimer(pMsg->Data.v, 1000);
                        break;
               
                /*  发送按下的消息 */
                case MSG_SetENTER:
                        pMsgInfo.MsgId = WM_NOTIFY_PARENT;
                        pMsgInfo.hWinSrc = hWinICON;
                        pMsgInfo.Data.v = WM_NOTIFICATION_RELEASED;
                        WM_SendMessage(pMsg->hWin, &pMsgInfo);       
                        break;
               
                /*  设置ICON的聚焦 */
                case MSG_SetICONFocus:
                        WM_SetFocus(hWinICON);
                        break;
               
                /* 删除通过ICON创建的对话框 */
                case MSG_Delect:
                        WM_DeleteWindow(hWinInfo);
                        break;
                       
                case WM_NOTIFY_PARENT:
回复

使用道具 举报

4

主题

16

回帖

76

积分

初级会员

积分
76
发表于 2018-3-11 17:24:27 | 显示全部楼层
硬汉哥,我参照这个智能家居程序,自己写了一个,图片能显示了,也能点击,就是点击后没有跳到子窗口,这是为啥?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106833
QQ
发表于 2018-3-12 02:02:05 | 显示全部楼层
17854117512 发表于 2018-3-11 17:24
硬汉哥,我参照这个智能家居程序,自己写了一个,图片能显示了,也能点击,就是点击后没有跳到子窗口,这是 ...

在你的另一个帖子里面回复你了。
回复

使用道具 举报

0

主题

22

回帖

22

积分

新手上路

积分
22
发表于 2018-6-26 13:34:18 | 显示全部楼层
学习了,谢谢楼主分享!
回复

使用道具 举报

29

主题

514

回帖

606

积分

金牌会员

积分
606
QQ
发表于 2018-9-1 14:19:00 | 显示全部楼层
顶贴支持,感谢分享。
Releasing your creativity
回复

使用道具 举报

0

主题

15

回帖

15

积分

新手上路

积分
15
发表于 2019-7-22 18:52:30 | 显示全部楼层
MARK STemwin 按键
回复

使用道具 举报

0

主题

1

回帖

1

积分

新手上路

积分
1
发表于 2022-3-8 14:11:19 | 显示全部楼层
学习学习学习
回复

使用道具 举报

0

主题

2

回帖

2

积分

新手上路

积分
2
发表于 2023-1-6 14:12:53 | 显示全部楼层
硬汉哥,我基本照搬你的智能家居例子,在图标界面上当实体按键进入到被选择的图标创建的对话框后,再用实体按键关闭该对话框时,实际发现按键的消息进入到该case了,但该对话框界面仍存在,但图标界面可以选择新的图标,也可以进入到新图标创建的对话框。
               /* 删除通过ICON创建的对话框 */
                case MSG_Delect:
                        WM_DeleteWindow(hWinInfo);
                        break;
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106833
QQ
发表于 2023-1-7 00:47:08 | 显示全部楼层
Sailuo 发表于 2023-1-6 14:12
硬汉哥,我基本照搬你的智能家居例子,在图标界面上当实体按键进入到被选择的图标创建的对话框后,再用实体 ...

经过微信讨论已经解决,是按键连续创建了多次导致的。
回复

使用道具 举报

0

主题

2

回帖

2

积分

新手上路

积分
2
发表于 2023-1-8 18:52:24 | 显示全部楼层
eric2013 发表于 2023-1-7 00:47
经过微信讨论已经解决,是按键连续创建了多次导致的。

嗯,是的,非常感谢硬汉哥
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-6 19:34 , Processed in 0.436180 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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