硬汉嵌入式论坛

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

[emWin] 提示:窗口定时器的小坑,Framewin和window的区别

[复制链接]

354

主题

2164

回帖

3231

积分

版主

Rank: 7Rank: 7Rank: 7

积分
3231
发表于 2020-5-13 10:33:28 | 显示全部楼层 |阅读模式
刚刚踩了个小坑。
创建窗口的时候,我们有时候是create window,有时候是create Framewin。 他们的回调函数指示的窗口是不一样的,可是看起来是一样的。

比如: hWin = GUI_CreateDialogBox(_aDialogCreate, GUI_COUNTOF(_aDialogCreate), _cbDialog, WM_HBKWIN, 0, 0);  这是常见的资源列表模式创建。
如果第一行的资源是: FRAMEWIN_CreateIndirect, xxxxxx
那么定时器必须是这么设定:     hTimerRefresh=WM_CreateTimer(WM_GetClientWindow(hWin),0,1000,0);
如果第一行的资源是: WINDOW_CreateIndirect, xxxxxx
那么定时器必须是这么设定:    hTimerRefresh=WM_CreateTimer(hWin,0,1000,0);


与大家共勉。。。
回复

使用道具 举报

7

主题

85

回帖

111

积分

初级会员

积分
111
发表于 2020-5-13 10:48:56 | 显示全部楼层
我一般使用这种方式创建:WM_CreateTimer(pMsg->hWin, 0, 50, 0);
回复

使用道具 举报

3

主题

422

回帖

431

积分

高级会员

积分
431
发表于 2020-5-13 10:57:38 | 显示全部楼层
恭喜楼主又填了一坑。
楼主有空可以拿起uc/gui 3.98的源码看看,后续开发会自然而然地跳过许多这种“坑”的。
因为看过源码,有些认知就变了,也就不会当这种是坑了。
回复

使用道具 举报

354

主题

2164

回帖

3231

积分

版主

Rank: 7Rank: 7Rank: 7

积分
3231
 楼主| 发表于 2020-5-13 15:48:49 | 显示全部楼层
JIKIMO 发表于 2020-5-13 10:48
我一般使用这种方式创建:WM_CreateTimer(pMsg->hWin, 0, 50, 0);

你这个方法可行。 在窗口initial的消息中再创建定时器。。。。
回复

使用道具 举报

7

主题

85

回帖

111

积分

初级会员

积分
111
发表于 2020-5-13 16:17:32 | 显示全部楼层
caicaptain2 发表于 2020-5-13 15:48
你这个方法可行。 在窗口initial的消息中再创建定时器。。。。

不止WM_INIT_DIALOG消息,哪个位置都可以,不过我只使用WINDOW框架,FRAMEWIN没具体测试
回复

使用道具 举报

5

主题

244

回帖

259

积分

高级会员

积分
259
发表于 2020-5-13 21:09:45 | 显示全部楼层
FrameWin有两个窗口组成,平时操作的时候就需要区分是对FrameWin主窗口操作还是对客户端窗口,而window只有一个窗口所以就没这些问题,我是这么理解的
回复

使用道具 举报

354

主题

2164

回帖

3231

积分

版主

Rank: 7Rank: 7Rank: 7

积分
3231
 楼主| 发表于 2020-9-16 10:09:49 | 显示全部楼层
JIKIMO 发表于 2020-5-13 10:48
我一般使用这种方式创建:WM_CreateTimer(pMsg->hWin, 0, 50, 0);

我今天使用了Framinwin的时候,使用你的这种方法创建窗口定时器,在initial的消息中创建,
在同一个回调函数中,无法响应WM_TIME消息。 还是得改成WM_GetClientWindow(pMsg->hWin)
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-5-19 11:55 , Processed in 0.241321 second(s), 23 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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