硬汉嵌入式论坛

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

[emWin] 关于在Framewin窗口上创建软键盘的功能

[复制链接]

3

主题

56

回帖

65

积分

初级会员

积分
65
发表于 2019-7-17 18:18:13 | 显示全部楼层 |阅读模式
       我起初是在WINDOW窗口上创建了软键盘,通关这个键盘向EDIT框输入ASCII字符和数字;我把软键盘的每一个按键都取消了捕获焦点功能,BUTTON_SetFocussable(hButton, 0);
       现在我希望可以拖动这个软键盘,所以我将WINDOW改成了Framewin,那么问题来了,我在界面下点击软键盘上的按键时,输入焦点自动跑到了Framewin上,我无法通过按键向
EDIT输入内容了,但是手册上面介绍说这个控件是没有输入聚焦功能的。
       那么我该怎样修改,才能保证在Framewin下,点击软键盘按键,依然可以向EDIT框输入字符呢?
回复

使用道具 举报

3

主题

56

回帖

65

积分

初级会员

积分
65
 楼主| 发表于 2019-7-17 18:18:53 | 显示全部楼层
求解,谢谢各位!
回复

使用道具 举报

36

主题

2040

回帖

2148

积分

至尊会员

积分
2148
发表于 2019-7-18 00:19:35 来自手机 | 显示全部楼层
如果的framewin上没有聚焦的控件,是不是跑到它上面的,估计是跑到桌面窗口上了,你可以创建软键盘后设置下edit聚焦状态
回复

使用道具 举报

3

主题

56

回帖

65

积分

初级会员

积分
65
 楼主| 发表于 2019-7-18 12:02:39 | 显示全部楼层
byccc 发表于 2019-7-18 00:19
如果的framewin上没有聚焦的控件,是不是跑到它上面的,估计是跑到桌面窗口上了,你可以创建软键盘后设置下 ...

不会是桌面窗口,我先前是用WM_CreateWindowAsChild直接创建为桌面窗口的子窗口,点击键盘后,是可以输入到编辑框的;现在是创建一个Frame为桌面子窗口,然后将这个Frame作为WM_CreateWindowAsChild的父窗口,EDIT就失去输入焦点了。
回复

使用道具 举报

23

主题

1406

回帖

1475

积分

至尊会员

积分
1475
发表于 2019-7-18 12:07:26 | 显示全部楼层
溪云初_VS28s 发表于 2019-7-18 12:02
不会是桌面窗口,我先前是用WM_CreateWindowAsChild直接创建为桌面窗口的子窗口,点击键盘后,是可以输入 ...

这么关键的信息,你竟然描述的这么混乱。到底软键盘是FrameWin还是EDIT所在的父窗口是FrameWin

直接上程序。。

代码不规范,亲人两行泪!
回复

使用道具 举报

3

主题

56

回帖

65

积分

初级会员

积分
65
 楼主| 发表于 2019-7-18 17:14:59 | 显示全部楼层
missfox 发表于 2019-7-18 12:07
这么关键的信息,你竟然描述的这么混乱。到底软键盘是FrameWin还是EDIT所在的父窗口是FrameWin

直接上 ...

EDIT是EDIT,软件盘所在窗口是WINDOW,这个WINDOW的父窗口是FRAMEWIN,FRAMEWIN的父窗口是桌面。现在点击软键盘,EDIT直接失去输入聚焦了。
回复

使用道具 举报

3

主题

56

回帖

65

积分

初级会员

积分
65
 楼主| 发表于 2019-7-18 17:16:52 | 显示全部楼层
        //创建一个框架窗口
        hKeyWindow = FRAMEWIN_CreateEx(197-50, 270+10+35, 320+11*12+12, 125+11*4+14, WM_HBKWIN, WM_CF_SHOW | WM_CF_STAYONTOP, FRAMEWIN_CF_MOVEABLE, ID_FRAMEWIN_KEYPAD, "KeyPad", NULL);
        hKeyWindowChild = WM_GetClientWindow(hKeyWindow);
        //创建键盘窗口为桌面窗口的子窗口       
        WM_CreateWindowAsChild(0, 0, 320+11*12, 125+11*4, hKeyWindowChild, WM_CF_SHOW | WM_CF_STAYONTOP, _cbKeyPad, 0);
回复

使用道具 举报

3

主题

56

回帖

65

积分

初级会员

积分
65
 楼主| 发表于 2019-7-18 17:17:09 | 显示全部楼层
溪云初_VS28s 发表于 2019-7-18 17:14
EDIT是EDIT,软件盘所在窗口是WINDOW,这个WINDOW的父窗口是FRAMEWIN,FRAMEWIN的父窗口是桌面。现在点击 ...

代码在下面
回复

使用道具 举报

23

主题

1406

回帖

1475

积分

至尊会员

积分
1475
发表于 2019-7-20 10:13:17 | 显示全部楼层

WM_CreateWindowAsChild本身支持聚焦
代码不规范,亲人两行泪!
回复

使用道具 举报

3

主题

56

回帖

65

积分

初级会员

积分
65
 楼主| 发表于 2019-7-22 20:03:08 | 显示全部楼层
missfox 发表于 2019-7-20 10:13
WM_CreateWindowAsChild本身支持聚焦

不是哦,我一开始就是用的WM_CreateWindowAsChild创建WINDOW,在它回调函数的WM_Init消息里面创建各个按键,是可以聚焦输入到EDIT控件的。改了FRAMEWIN后不行的
回复

使用道具 举报

23

主题

1406

回帖

1475

积分

至尊会员

积分
1475
发表于 2019-7-23 08:32:32 | 显示全部楼层
溪云初_VS28s 发表于 2019-7-22 20:03
不是哦,我一开始就是用的WM_CreateWindowAsChild创建WINDOW,在它回调函数的WM_Init消息里面创建各个按 ...

咱能不能获取当前是那个聚焦了,你前面说没有聚焦的桌面创建,又发送不到你FrameWin窗口,那只要下面这个了

//创建键盘窗口为桌面窗口的子窗口        
        WM_CreateWindowAsChild(0, 0, 320+11*12, 125+11*4, hKeyWindowChild, WM_CF_SHOW | WM_CF_STAYONTOP, _cbKeyPad, 0);
代码不规范,亲人两行泪!
回复

使用道具 举报

3

主题

56

回帖

65

积分

初级会员

积分
65
 楼主| 发表于 2019-7-23 18:04:56 | 显示全部楼层
missfox 发表于 2019-7-23 08:32
咱能不能获取当前是那个聚焦了,你前面说没有聚焦的桌面创建,又发送不到你FrameWin窗口,那只要下面这个 ...

用这个是可以正常输入字符到EDIT控件,但是整个软键盘窗口是没法拖动的。我是想通过Framewin的标题栏来拖动软键盘窗口
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-31 19:22 , Processed in 0.302970 second(s), 24 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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