查看: 1906|回复: 5

[已经解决] API 调用重复载入怎么办?

[复制链接]
梦石
0
星屑
50
在线时间
10 小时
注册时间
2012-2-22
回帖
11
发表于 2012-5-19 03:36:09 | 显示全部楼层 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有账号?注册会员

×
@inputbox = Win32API.new ('.\inputbox.dll','inputbox', ['p'], 'p')
@abc=@inputbox.call("")
$game_message.texts.push( "白痴的#{@abc}")

说明:inputbox.dll 是自己写的一个DLL,用来输入文字;
问题:发现当定义@inputbox的时候DLL被载入一次,而且无法取返回值。call的时候又调用一次,感觉很奇怪,怎么让API定义的时候不自动载入呢?

另外一个问题:在文章显示的时候,换行用什么?我发现API返回的文本换行全部变成框框,无法实现的?
梦石
0
星屑
752
在线时间
800 小时
注册时间
2011-10-20
回帖
2257

开拓者

发表于 2012-5-19 06:26:27 | 显示全部楼层
本帖最后由 end55rpg 于 2012-5-19 06:26 编辑

最好把那你那里的脚本发来看看。。。。。
还有第二个问题= =难道是换行符不同?或者用旧版RMvx试试
欢迎点此进入我的egames.wink.ws,有RMQQ堂等

[url=http://rpg.blue/thread-317273-1-1.html]短篇八-赶选

http://yun.baidu.com/share/link?shareid=2158225779&uk=169642147&third=0


历险?ARPG?赢回你的疆域?新的战斗模式?…………点击这里:[宋乱贼狂 for QQ堂]
http://rpg.blue/group-368-1.html
programing ....?
[url=http://rpg.blue/thrd-234658-1-1.html]
回复

使用道具 举报

Fuzzy Ginkgo

梦石
0
星屑
61105
在线时间
1933 小时
注册时间
2010-6-26
回帖
1535

烫烫烫开拓者

发表于 2012-5-19 06:59:50 | 显示全部楼层
第二个问题可能需要把str按行拆开一行一行压入……
"白痴的#{@abc}".split(/\n/).each &$game_message.texts.method(:push)

点评

谢谢您的方法。我用您的方法,然后改DLL返回时把换行全部替换成ASCII码为10的字符,居然成功了。真是奇怪,一般软件的取值是13,这里居然是10.  发表于 2012-5-20 00:14
我的言论只代表我个人的观点,不代表雇主及/或任何第三方的立场。
Opinions expressed are solely my own and do not express the views or opinions of my employer and/or any third parties.
捐赠 | GitHub
回复

使用道具 举报

梦石
0
星屑
50
在线时间
10 小时
注册时间
2012-2-22
回帖
11
 楼主| 发表于 2012-5-19 22:45:10 | 显示全部楼层
end55rpg 发表于 2012-5-19 06:26
最好把那你那里的脚本发来看看。。。。。
还有第二个问题= =难道是换行符不同?或者用旧版RMvx试试 ...

易语言DLL的脚本如下:

.版本 2
.支持库 iconv

.子程序 inputbox, 文本型, 公开
.参数 retuen, 文本型

.如果真 (retuen = “”)
    返回 (“”)
.如果真结束
载入 (窗口1, , 真)
retuen = chr
chr = 到文本 (编码转换 (到字节集 (retuen), #编码_GBK, #编码_UTF_8, ))
返回 (chr)

------------------------------------
.版本 2
.支持库 eAPI

.程序集 窗口程序集1
.程序集变量 box, 矩形数据
.程序集变量 bb, 字节集

.子程序 _按钮1_被单击

chr = 编辑框1.内容
.如果真 (chr = “”)
    chr = “懒虫”
.如果真结束
窗口1.销毁 ()

.子程序 _窗口1_创建完毕

设置窗口透明度 (窗口1.取窗口句柄 (), 130)

box.左边 = 窗口1.左边
box.顶边 = 窗口1.顶边
box.右边 = 窗口1.左边 + 窗口1.宽度
box.底边 = 窗口1.顶边 + 窗口1.高度
bb = 截取屏幕区域 (box, #接口常量.到字节集, )
窗口1.底图 = bb


【声明】
这个易语言脚本入口我已经改过了,为了避免初次定义API的时候被调入,做了参数判别,如果传递空文本参数就直接退出,所以问题1在易语言那边解决掉了。不过还是没弄明白如果在RPG MAKER中该如何解决。


‘‘──bearadam于2012-5-19 22:47补充以下内容

我能不能在函数返回的时候把返回的文本中的换行符号替换成某个表达呢?
’’

点评

rpg maker vx 中的换行符是什么呢?如果我在文章中直接嵌入这个换行符,能否实现换行的效果?  发表于 2012-5-19 23:44
不知道E怎么改换行符。。。  发表于 2012-5-19 22:53
回复

使用道具 举报

梦石
0
星屑
752
在线时间
800 小时
注册时间
2011-10-20
回帖
2257

开拓者

发表于 2012-5-19 22:56:26 | 显示全部楼层
把@inputbox = Win32API.new ('.\inputbox.dll','inputbox', ['p'], 'p')
@abc=@inputbox.call("")
$game_message.texts.push( "白痴的#{@abc}")全部放在方法里,@inputbox = Win32API.new ('.\inputbox.dll','inputbox', ['p'], 'p')别让这个先运行,要用的时候再运行。。。

点评

那只有等它载入了。。。= =,为什么你要不准2次?  发表于 2012-5-19 23:13
兄弟,你确定调用的时候不会出来两次?我看关于.new的说明,说是会自动载入的啵~~~~  发表于 2012-5-19 23:09
欢迎点此进入我的egames.wink.ws,有RMQQ堂等

[url=http://rpg.blue/thread-317273-1-1.html]短篇八-赶选

http://yun.baidu.com/share/link?shareid=2158225779&uk=169642147&third=0


历险?ARPG?赢回你的疆域?新的战斗模式?…………点击这里:[宋乱贼狂 for QQ堂]
http://rpg.blue/group-368-1.html
programing ....?
[url=http://rpg.blue/thrd-234658-1-1.html]
回复

使用道具 举报

梦石
0
星屑
50
在线时间
10 小时
注册时间
2012-2-22
回帖
11
 楼主| 发表于 2012-5-19 23:43:10 | 显示全部楼层
end55rpg 发表于 2012-5-19 22:56
把@inputbox = Win32API.new ('.\inputbox.dll','inputbox', ['p'], 'p')
@abc=@inputbox.call("")
$game_m ...

为什么不准两次呢?比如说事件问:锄禾日当午的下一句是什么?然后你定义了一个API来接收用户的输入,定义的时候输入框出来一次(此时无论用户输入什么程序都收不到返回值,因为只是函数定义而已),调用再出来一次,这时候用户才可以输入。这样不是很影响使用吗?
回复

使用道具 举报

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

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部