开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 22717|回复: 142
收起左侧

[易语言纯源码] 比较巧妙的显示"无法在易语言窗口显示的字符"的解决方案

[复制链接]
结帖率:100% (26/26)
发表于 2018-10-27 22:02:31 | 显示全部楼层 |阅读模式   浙江省杭州市
分享源码
界面截图:
是否带模块: 纯源码
备注说明: -
众所周知,易自带的普通窗口、编辑框等等在中文系统上都是 CP_GB2312 的代码页,所以像一些其它国家的文字就无法显示, 更不用提 emoji 表情之类的了。


自己用 CreateWindowExW 创建的话自然是可以的,但是对于习惯了易自带组件的朋友们可能有点嫌麻烦。


现在我提供一种既可以在易IDE中可视化创建编辑框等控件,又可以显示这些字符的思路。


先上图:



这个编辑框可以显示 emoji,说明绝对不是易自带的编辑框,但是代码中改变易自带的编辑框的属性,例如 编辑框A.左边 = 1,或者调用自带的编辑框的方法,例如 编辑框A.获得焦点(), 实际上操作的是 编辑框W 。


这样就可以在 IDE 中和往常一样一拖一放地创建组件,只需要初始化一下,就可以享受宽字符版组件。




思路很简单,可以配合着代码看以下内容:




1、初始化的时候,通过 编辑框A 的句柄,获取 编辑框A 的"所有"信息;
2、用这些信息去用 CreateWindowExW 创建一个 编辑框B;
3、隐藏 编辑框A ;
4、监听两个窗口的消息,根据对应的消息进行信息替换或者同步;
5、设置软件私有字体,emoji 的原生显示需要字体支持,这个我说过不少次了,不再赘述。



目前已知的坑如下:


某些事件,例如 _编辑框A_按下某键,这个事件比 WM_KEYDOWN 要早,也没有其它消息,尝试 hook 了原函数也一样,所以吴涛内部估计有别的处理吧。




发散思维:


这只是个例子,写得不是很详尽完善,但是思路是可以的(我所说的坑,也是肯定可以通过 hook 解决的),所以我觉得还算是一个很巧妙很平衡的解决方案。别的组件也可以这样,例如超级列表框,就可以用这种方法把虚表实现一下,想想都很舒服的吧。




用到的模块也是我开源的:https://gitee.com/junkboy/JBec

EWindowA2W.zip (433.26 KB, 下载次数: 292)

点评

爱你哟i   江西省九江市  发表于 2018-11-2 23:13
鶸鶸鶸   山东省济南市  发表于 2018-10-31 01:02
爱你哟i   广东省汕头市  发表于 2018-10-27 22:09
爱你哟i   四川省成都市  发表于 2018-10-27 22:08
爱你哟i   广东省广州市  发表于 2018-10-27 22:07

评分

参与人数 17好评 +13 精币 +34 收起 理由
qdfly + 1 感谢分享,很给力!~
15533938932 + 1 支持开源~!感谢分享
w23108 + 1 新技能已get√
jksuan + 1 支持开源~!感谢分享
冰点 + 1 + 5 感谢分享,很给力!~
羽傲天 + 1 + 2 支持开源~!感谢分享
沫茗 + 1 + 2 新技能已get√
流星暴雨 + 1 + 2 鶸鶸鶸
aismy + 1 + 2 支持开源~!感谢分享
kyo9766 + 1 支持开源~!感谢分享
ffsfdsa + 1 + 2 新技能已get√
酷宝贝 + 1 + 4 新技能已get√
¢刀丛里的诗 + 1 + 2 感谢分享,很给力!~
鐵憨憨 + 1 + 2 感谢发布原创作品,一定好好学习,天天向上
Bmmug + 1 + 2 爱你哟i
L1yp + 1 + 2 这么厉害!必须给个红包鼓励下~
oopao + 1 + 3 支持开源~!感谢分享

查看全部评分


本帖被以下淘专辑推荐:

签到天数: 17 天

发表于 2024-7-11 01:02:24 | 显示全部楼层   河南省新乡市
支持开源~!感谢分享
回复 支持 反对

使用道具 举报

签到天数: 4 天

发表于 2024-4-27 14:14:09 | 显示全部楼层   浙江省杭州市
好好 dddsdsd
回复 支持 反对

使用道具 举报

签到天数: 4 天

发表于 2024-4-27 14:13:36 | 显示全部楼层   浙江省杭州市
我看看是不是实现了
回复 支持 反对

使用道具 举报

签到天数: 1 天

发表于 2023-11-22 17:22:11 | 显示全部楼层   浙江省宁波市
支持开源~!感谢分享
回复 支持 反对

使用道具 举报

发表于 2023-8-13 07:18:07 | 显示全部楼层   广西壮族自治区南宁市
666666666666666666666
回复 支持 反对

使用道具 举报

发表于 2022-8-15 14:06:29 | 显示全部楼层   四川省内江市
eeeeeeeeeeeeeeeee
回复 支持 反对

使用道具 举报

头像被屏蔽
发表于 2020-1-7 01:24:44 | 显示全部楼层   福建省厦门市
6666666666666666666666666
回复 支持 反对

使用道具 举报

结帖率:81% (38/47)

签到天数: 2 天

发表于 2019-10-14 03:36:03 | 显示全部楼层   福建省福州市

        感谢分享,很给力!~
回复 支持 反对

使用道具 举报

签到天数: 1 天

发表于 2019-10-12 07:51:24 | 显示全部楼层   广西壮族自治区柳州市
厉害哟,大神大神大神
回复 支持 反对

使用道具 举报

结帖率:33% (1/3)

签到天数: 3 天

发表于 2019-10-2 13:32:57 | 显示全部楼层   广东省深圳市
很有创意,非常棒!
回复 支持 反对

使用道具 举报

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

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 793400750,邮箱:wp@125.la
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

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