搜索
bottom↓
回复: 22

也分享一个基于emWin的中文拼音输入法

  [复制链接]

出150入135汤圆

发表于 2017-7-10 18:34:16 | 显示全部楼层 |阅读模式
本帖最后由 neqee 于 2017-7-10 18:31 编辑

拼音索引表是引用这个帖子的:https://www.amobbs.com/thread-5668320-1-1.html
感谢chun2495、252514251两位网友!

打开工程目录下的"Exe\GUISimulationDebug.exe"即可看到效果。
这个emWin的中文拼音输入法已经做的很完善,也经过比较详细的测试,可以直接拿来当做模板使用(根据需要修改键盘的大小);实现的程序也非常简洁,同时也使用了emWin的一些知识点,值得阅读学习;若你还不会用emWin,可以看:”emWin 2天速成实例教程
  
使用例程:
emWin脱机模拟仿真软件Code::Blocks(”软件/资料下载栏目可下载)打开工程文件:SimulationTrial.cbp然后编译工程:

  
运行emWin中文拼音输入法程序:


  
点击编辑框后自动弹出键盘的实现方法:

总体思想是在ID_EDIT_0ID_EDIT_5点击消息中用WM_ShowWindow()函数显示出键盘,并在”Ese”按键的点击消息中用WM_HideWindow()函数隐藏键盘:


  
而下面这段程序的作用是判断并移动键盘到合适的位置:

总体的思想是判断键盘有没有超出屏幕范围,如果超出则移动键盘到合适的位置,WM_GetWindowOrgX(pMsg->hWinSrc)是获取编辑框位置的函数,如果不理解” pMsg->hWinSrc”,可以看:emWin 2天速成实例教程005_控件聚焦和用户消息的使用方法,其他API函数可以查阅emWin说明书,这些API函数是非常有用的,可以记住它们。
  
键盘处理程序:
这里只能简单的说说处理的思想,很多细节还需要耐心去看程序才行。
在初始化消息WM_INIT_DIALOG中,用下面程序禁止掉键盘里面所有按键的聚焦,因为如果不这样做的话,点击键盘之后,焦点光标就不会停留在编辑框了:
for(i=ID_BUTTON_0;i<=ID_BUTTON_34; i++) BUTTON_SetFocussable(WM_GetDialogItem(pMsg->hWin,i), 0);
ID_BUTTON_0ID_BUTTON_26的点击消息中,根据当前输入法做相应的处理,如果是英文或符号比较简单,获取按键的字符并用GUI_StoreKeyMsg()函数向emWin内部储存键值即可,emWin内部会自动处理并显示到编辑框里去;如果是中文,则将按键字符显示到ID_TEXT_0文本控件(显示拼音的那个),并用WM_SendMessage()函数向ID_TEXT_0发送一个WM_NOTIFICATION_USER+0消息,通知ID_TEXT_0根据自己的内容去检索拼音并将汉字显示到ID_TEXT_1ID_TEXT_9文本控件中;为什么要用发消息?为什么不直接在那里处理?因为很多地方都需要重新检索并更新ID_TEXT_1ID_TEXT_9的内容,这样做是不是可以省掉很多程序?可以看出emWin消息的作用了吧?
  
汉字选择:
ID_TEXT_1ID_TEXT_9文本控件的点击消息中,把自己的内容显示到当前聚焦的编辑框中去即可:


  
汉字检索翻页:
这是中文拼音输入法程序设计的难点,如果思路不好,程序会非常臃肿,笔者也是苦苦思索才非常简洁的实现这一点:


基本思想是:在拼音检索时,把检索到的中文字符串分组,每组9个汉字(因为每次显示9个汉字ID_TEXT_1ID_TEXT_9),每一组对应一个指针并将指针存于pbuffPY[]数组中,这样翻页时就知道怎么做了吧?
  
这里重点解释下GUI_pUC_API->pfGetCharSize(),这个函数的作用是返回一个汉字占用几个字节,也许你会说:一个汉字不是占用两个字节吗?错!要看你的emWin用什么编码,如果是GBKGB2312编码占两个字节没错,但如果是UTF-8编码呢?就不是占用两个字节了;是在哪里告诉emWin用什么编码呢?

另外,如果你用的是GBKGB2312编码,emWin是没有GUI_UC_SetEncodeGBK()GUI_UC_SetEncodeGB2312()函数的,需要自己实现,也许在德国人眼里,是没有GBKGB2312概念吧。
  
还有值得注意的是,如果你需要用编辑框控件显示中文的话,最好用UFT-8(实际就是UNICODE)编码,如果用GBKGB2312的话,会出现中文显示BUG让你抓狂;如果编辑框控件不显示中文一般就没问题。
  


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

阿莫论坛20周年了!感谢大家的支持与爱护!!

月入3000的是反美的。收入3万是亲美的。收入30万是移民美国的。收入300万是取得绿卡后回国,教唆那些3000来反美的!

出0入0汤圆

发表于 2017-7-10 19:37:42 来自手机 | 显示全部楼层
谢谢分享。。。。

出0入0汤圆

发表于 2017-7-10 19:44:42 来自手机 | 显示全部楼层
谢谢你了。

出0入20汤圆

发表于 2017-7-10 20:21:47 | 显示全部楼层
好方法。值得看!

出0入17汤圆

发表于 2017-7-10 21:17:29 | 显示全部楼层
收藏了,感谢lz分享

出0入0汤圆

发表于 2017-7-10 21:29:39 | 显示全部楼层
emwin 中文拼音显示框,这是一个极有用的东西。
头2周,也做了一个这样的数字键盘。

emwin编程全是套路,哈哈。掌握了套路就简单了。


出0入0汤圆

发表于 2017-7-10 23:42:36 来自手机 | 显示全部楼层
谢谢分享!

出0入0汤圆

发表于 2017-7-10 23:50:09 | 显示全部楼层
谢谢分享,已收葳

出0入0汤圆

发表于 2017-7-11 06:47:10 来自手机 | 显示全部楼层
谢谢分享,已收葳

出150入135汤圆

 楼主| 发表于 2017-7-12 16:31:30 来自手机 | 显示全部楼层
kinsno 发表于 2017-7-10 21:29
emwin 中文拼音显示框,这是一个极有用的东西。
头2周,也做了一个这样的数字键盘。


是的,熟悉了emwin几个关键的概念之后做界面就简单了!无非就是查下说明书用哪个API函数

出0入0汤圆

发表于 2017-7-12 22:32:26 来自手机 | 显示全部楼层
好东西,收藏了

出0入0汤圆

发表于 2017-7-13 15:31:27 | 显示全部楼层
好东西,看一看!!!!!!

出0入0汤圆

发表于 2017-7-13 17:06:44 | 显示全部楼层
谢谢分享

出0入0汤圆

发表于 2017-7-16 13:57:43 | 显示全部楼层
谢谢分享

出0入0汤圆

发表于 2017-7-16 16:49:45 | 显示全部楼层
emWin的中文拼音  这个好厉害,谢谢分享

出0入0汤圆

发表于 2017-7-17 08:21:32 | 显示全部楼层
谢谢分享

出0入0汤圆

发表于 2017-7-20 15:43:10 | 显示全部楼层
谢谢分享

出0入0汤圆

发表于 2017-8-18 15:53:50 | 显示全部楼层
楼主卖的屏幕功能挺强大

出0入0汤圆

发表于 2017-8-18 16:23:41 | 显示全部楼层
学习下,谢谢分享。

出100入101汤圆

发表于 2017-8-19 07:29:20 | 显示全部楼层
emwin很强大

出0入0汤圆

发表于 2017-9-5 10:35:02 | 显示全部楼层
牛逼啊,一直想搞这个玩玩,但是一直都没有找到下手的机会,这次终于可以下手搞啦 !!

出25入84汤圆

发表于 2017-9-5 10:51:12 | 显示全部楼层
谢谢分享!

出0入0汤圆

发表于 2018-10-22 15:35:48 | 显示全部楼层
你好,请教下,获取 buttom 的按钮字符后,使用 GUI_StoreKeyMsg 这个存储字符,再在编辑框里面显示相应的字符,

目前发现有 2个字符不能够显示,其他的字符显示都很正常,

不能够显示的字符 英文模式 ! 感叹号,还有一个 双 " 引号,

请问一下这个是怎么个情况造成的啊 ??
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-25 19:02

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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