- 注册时间
- 2004-4-20
- 最后登录
- 2019-7-20
⑤进阶
- 积分
- 509
|

楼主 |
发表于 2004-9-13 17:28:21
|
显示全部楼层
以下是引用Danexx在2004-9-13 13:06:24的发言:
似乎没什么用啊?~~
怎么会,你指的可能是RGSS100J没有起作用吧。如果你操作正确的话,输入下面的脚本来测试一下Win32API能不能起作用。
在脚本编辑器最上面输入脚本,名称为Win32API_Test。然后F12运行游戏,如果弹出标题为RGSS的窗口,说明Win32API已经起作用了。
顺便一句,不用再require \"Win32API\"了。这可能是你的问题所在吧。
# MultiByteToWideChar/WideCharToMultiByte声明
CP_ACP = 0
CP_UTF8 = 65001
MultiByteToWideChar = Win32API.new(\'kernel32\', \'MultiByteToWideChar\', \'ilpipi\', \'i\')
WideCharToMultiByte = Win32API.new(\'kernel32\', \'WideCharToMultiByte\', \'ilpipipp\', \'i\')
# MessageBoxA声明
MB_OK = 0x00000000
MessageBoxA = Win32API.new(\'user32\', \'MessageBoxA\', \'lppi\', \'i\')
# UTF8 -> UTF16
text = \'这是Win32API生成的弹出窗口,要注意Unicode的问题\';
len = MultiByteToWideChar.call(CP_UTF8, 0, text, text.size, nil, 0);
buf = \"\\0\" * (len*2)
len = MultiByteToWideChar.call(CP_UTF8, 0, text, text.size, buf, buf.size/2);
# UTF16 -> Shift-JIS(转换字符串格式)
len = WideCharToMultiByte.call(CP_ACP, 0, buf, buf.size/2, nil, 0, nil, nil);
buf2 = \"\\0\" * len
len = WideCharToMultiByte.call(CP_ACP, 0, buf, buf.size/2, buf2, buf2.size, nil, nil);
# ASCII可以,但汉字就不可以正确显示了
buf2 += \'abc\';
# 表示
MessageBoxA.call(0, buf2, \"RGSS\", MB_OK) |
|