点评
众所周知,易自带的普通窗口、编辑框等等在中文系统上都是 CP_GB2312 的代码页,所以像一些其它国家的文字就无法显示, 更不用提 emoji 表情之类的了。
其实,在这之前我做了一些小小的处理(啊???)
思路不是很难
如果不介意的话,阅读代码时,可以配合这下面我的思路看看:
1、首先,程序肯定不是直接通过启动窗口启动的,而是绕了个弯子:
先执行了“InlineHook_”的命令,钩掉了“DrawTextA”,“CreateWindowExA”,“SetWindowLongA”3个函数
2、处理,处理“CreateWindowExA”,“SetWindowLongA”并不是很困难,用他们对应的Unicode版的命令替换掉就OK
3、处理DrawTextA,标签是通过这个函数来把字符绘制上去的,所以要处理掉这个函数:
其实就是判断一下是否是要绘制标签,然后用“DrawTextW”替换“DrawTextA”,否则执行“DrawTextA”
4、设置标题,其实就是用“SetWindowTextW”这个函数
注意“#测试Unicode”中的Unicode不是标准的Unicode,需要加上{0,0}
5、使用,你就会惊奇地发现……