硬汉嵌入式论坛

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

[emWin] 关于emWin控件,窗口,对话框等聚焦问题总结

[复制链接]

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106738
QQ
发表于 2018-1-3 01:06:48 | 显示全部楼层 |阅读模式
主要是讨论两种对话框,函数WINDOW_CreateEx,函数WM_CreateWindowAsChild,函数WM_CreateWindow和桌面窗口的聚焦情况:




1. 函数GUI_CreateDialogBox 创建对话框,主体窗口是WINDOW_CreateIndirect创建,不支持聚焦。
2. 函数GUI_CreateDialogBox 创建对话框,主体窗口是FRAMEWIN_CreateIndirect创建,不支持聚焦。
注:先进入WM_CREATE消息,然后进入WM_INIT_DIALOG消息,在WM_CREATE消息里面,仅pMsg->hWin是有效的,此时WM_GetClientWindow( pMsg->hWin  )还无效,获得的句柄是0。在入WM_INIT_DIALOG消息消息里面就没有问题了,都有效了。
对于对话框来说,如果上面有聚焦的控件,会自动的进行聚焦。
3. 函数WINDOW_CreateEx不支持WM_CREATE消息。
4. WM_CreateWindowAsChild或者函数WM_CreateWindow
(1)不带任何控件的情况下是可以聚焦的,这点特别注意,像上面的三个都是不可以的。
(2)WM_SET_FOCUS支持,前面三点介绍的函数都不支持。
If the window gains the input focus, the Data.v value is set to 1. If the window accepts the input focus, it should set the Data.v value to 0 in reaction on this message.
If the window loses the input focus, the Data.v value is set to 0.


case WM_SET_FOCUS:
      printf("pMsg->Data.v = %d\r\n", pMsg->Data.v);
      pMsg->Data.v = 0; 是1的时候,切记清除。
      break;


5. 桌面窗口也是支持设置聚焦的。

回复

使用道具 举报

10

主题

35

回帖

65

积分

初级会员

积分
65
发表于 2023-2-14 18:06:06 | 显示全部楼层
硬汉哥,这几条关于聚焦问题在emwin手册里有描述吗?想具体了解一下
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-3 09:11 , Processed in 0.276882 second(s), 34 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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