API创建窗口就算了...因为就是为了用易语言自带的画窗口...用API的话也就没有用易语言的必要了...纯API窗口在某种意义上C++的确会更方便...
← ←本来我是想Hook掉CreateWindowExA,然后自己调用CreateWindowExW...成功是成功了....但是拿Spy看了下窗口还是ANSI的...后来百度得知窗口ANSI还是UNICODE取决于注册窗口类的时候使用 RegisterClassA还是RegisterClassW决定的...
然后想说自己hook掉RegisterClassA然后内部调用UNICODE版本...结果悲伤的发现RegisterClass传递的参数是一个自定义数据类型...如果要取子程序地址,易语言要求参数必须是基本数据类型.....
理论上说RegisterClass的参数我也不需要修改,应该可以用整数型代替,反正说白了就是传递个地址...但是结果是窗口根本创建不出来程序变成秒退了QAQ
求解决方案
(PS:易语言官方论坛有个UNICODE化控件的模块...但是不开源....关键是他那个退出窗口的时候用需要使用 UNICODE类.结束(),但是这个方法会结束整个进程。如果不调用结束的话对一个窗口重复打开,多次UNICODE化后程序也会自动秒退.....)
顺便吐槽下易语言不支持UNICODE遇到非简体中文的系统伤不起啊伤不起....
← ←本来我是想Hook掉CreateWindowExA,然后自己调用CreateWindowExW...成功是成功了....但是拿Spy看了下窗口还是ANSI的...后来百度得知窗口ANSI还是UNICODE取决于注册窗口类的时候使用 RegisterClassA还是RegisterClassW决定的...
然后想说自己hook掉RegisterClassA然后内部调用UNICODE版本...结果悲伤的发现RegisterClass传递的参数是一个自定义数据类型...如果要取子程序地址,易语言要求参数必须是基本数据类型.....
理论上说RegisterClass的参数我也不需要修改,应该可以用整数型代替,反正说白了就是传递个地址...但是结果是窗口根本创建不出来程序变成秒退了QAQ
求解决方案
(PS:易语言官方论坛有个UNICODE化控件的模块...但是不开源....关键是他那个退出窗口的时候用需要使用 UNICODE类.结束(),但是这个方法会结束整个进程。如果不调用结束的话对一个窗口重复打开,多次UNICODE化后程序也会自动秒退.....)
顺便吐槽下易语言不支持UNICODE遇到非简体中文的系统伤不起啊伤不起....