|
分享源码
界面截图: |
|
是否带模块: |
纯源码 |
备注说明: |
- |
众所周知,易自带的普通窗口、编辑框等等在中文系统上都是 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)
|
评分
-
查看全部评分
本帖被以下淘专辑推荐:
- · 鱼木|主题: 1558, 订阅: 152
- · 精品集|主题: 615, 订阅: 64
- · 精品|主题: 57, 订阅: 8
- · 实用型收集|主题: 4, 订阅: 0
|