Project1

标题: 接"rm实现输入信息筐"而做的范例 [打印本页]

作者: sizz123    时间: 2008-4-30 06:52
标题: 接"rm实现输入信息筐"而做的范例
   本范例属于教程范例,作用是调用vb程序来做窗体.范例中,和npc说话就能开启vb,当你输入后,按确定,rm就会说:"你输入的是xxxx."

http://rpg.blue/upload_program/files/rm信息传递研究报告_89938241.rar
作者: 禾西    时间: 2008-4-30 18:09
不支持漢字嗎?|||
輸入
我不知道耶...

只顯示
...

而且速度很慢...看來需要進一步優化才能派上用場.
[LINE]1,#dddddd[/LINE]
我承認很大部分問題是我的電腦內存不足.Orz
作者: sizz123    时间: 2008-4-30 18:42
"关于不支持汉字",谢谢你的提醒

作者: orochi2k    时间: 2008-5-1 01:26
刚好最近有类似打算...抽空,我也做个玩玩{/cy}
用文件传递防止挂起-_-0
作者: sizz123    时间: 2008-5-2 17:19
思考了切换问题:如果不解决,那么弹出窗口干扰将是最大的麻烦.
  问题是:"如何切换不到rm?"
  目前考虑的方法是:通过ShowWindow函数来隐藏窗口.这样就无法通过alt+tab来切换了.

作者: myzchh    时间: 2008-5-3 19:44
好啊,赶明做个网络游戏......哈哈!
RM+VB!!
作者: hongtao    时间: 2008-5-8 00:52
{/jy}!
支持楼上的!  可能过不了多久真的能做网络游戏了! ms怎么解决资料传输问题....
作者: 幻耶    时间: 2008-5-9 17:49
希望能和角色取名字联系起来
作者: orochi2k    时间: 2008-5-10 02:28
呃...终于写出接近完美的方法了...统一了下编码为UNICODE
然后基于文件的同步...
作者: myzchh    时间: 2008-5-10 22:40
我只想拜托你把VB窗体文件带上,好吗?
作者: sizz123    时间: 2008-5-11 04:55
以下引用orochi2k于2008-5-9 18:28:22的发言:

呃...终于写出接近完美的方法了...统一了下编码为UNICODE
然后基于文件的同步...


[本贴由作者于 2008-5-9 21:08:50 最后编辑]

   是说汉字问题?

作者: orochi2k    时间: 2008-5-11 19:37
嗯...统一把两边的编码全转UNICODE了,然后中间前后加了开始和中断,中间再检查信息输入误差之类的东东确保转码正确...于是,完美中文了...(甚至还包含日文,韩文之类)

接着,使用基于文件的同步方式...
那啥...VB没写那内容时文件不存在
RM在某文件不存在时死循环刷画面(防挂起)
然后VB写了文件后
RM检查到了跳出循环条件...去读文件...
于是...搞定了...
最后RM负责把临时文件灭掉...
(VB窗口被强行挂在最前显示,且去掉正常的关闭)


呃...可能搞得有点太复杂了...


试验效果为石器时代最新输入框...交给玩家测试一周,观察中...
作者: orochi2k    时间: 2008-5-12 04:19
以下引用sizz123于2008-5-11 19:05:00的发言:

怎么把窗体挂在最前面?

用神奇的API


去处正常关闭和窗口前置代码如下

Private Declare Function SetWindowPos Lib "user32" ( _
ByVal hWnd As Long, _
ByVal hWndInsertAfter As Long, _
ByVal x As Long, ByVal y As Long, _
ByVal cx As Long, ByVal cy As Long, _
ByVal wFlags As Long _
) As Long
Const HWND_TOPMOST = -1
Const SWP_SHOWWINDOW = &H40

Private Declare Function GetSystemMenu Lib "user32" (ByVal hWnd As Long, _
    ByVal bRevert As Long) As Long

Private Declare Function RemoveMenu Lib "user32" (ByVal hMenu As Long, _
    ByVal nPosition As Long, ByVal wFlags As Long) As Long
Private Const MF_REMOVE = &H1000&
Private Const SC_COLSE = &HF060
Private Const SC_MAXIMIZE = &HF030
Private Const SC_MINIMIZE = &HF020

以及要进行的窗口的代码
Private Sub Form_Load()
Dim retValue As Long
retValue = SetWindowPos(Me.hWnd, HWND_TOPMOST, Me.CurrentX, Me.CurrentY, 300, 300, SWP_SHOWWINDOW)
  RemoveMenu GetSystemMenu(Me.hWnd, 0), SC_COLSE, MF_REMOVE
  RemoveMenu GetSystemMenu(Me.hWnd, 0), SC_MAXIMIZE, MF_REMOVE
  RemoveMenu GetSystemMenu(Me.hWnd, 0), SC_MINIMIZE, MF_REMOVE
End Sub
'将窗体设置为处于所有窗口的顶层,注意在 VB 中运行时,可能不行,但编译成EXE后就可以了

作者: 青龙之鳞    时间: 2008-5-13 02:40
提示: 作者被禁止或删除 内容自动屏蔽
作者: sizz123    时间: 2008-5-13 17:03
   联网还没有什么兴趣去做。反正数据都可以传输,以后用vb完全代替rm做窗口是完全可能的。
作者: 五彩西瓜    时间: 2008-5-13 20:44
不大会用~~
作者: sizz123    时间: 2008-5-16 02:20
以下引用五彩西瓜于2008-5-13 12:44:47的发言:

不大会用~~


   这只是个还没有成型的范例,能发展,但目前不能使用
-----------------------------------------------------------------------------------
    不能使用的1个因素是"数据传输的数量问题"----由于没有找到rm连接数据库的方法(常用的数据库),所以目前只能通过文本来传输少量的数据.所以,目前只能用在起名字之类的地方.
-----------------------------------------------------------------------------------

作者: sizz123    时间: 2008-5-19 17:07
setwindowpos..是不是要在rm和vb中都要写呢?
作者: orochi2k    时间: 2008-5-20 05:25
呃...我只在VB里写了...测试时可能没反应,编译完拉出EXE貌似有效
作者: sizz123    时间: 2009-6-12 08:00
  怎么把窗体挂在最前面?




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1