赞 0  
 
VIP 0 
 
好人卡 0 
 
积分 1  
经验 792 
 
最后登录 2014-10-5 
 
在线时间 24 小时 
 
 
 
Lv1.梦旅人 
	梦石 0  星屑 50  
        在线时间 24 小时 
        注册时间 2012-2-14 
        帖子 9  
 
 
	
 本帖最后由 花晴兰 于 2012-2-14 06:43 编辑  http://sourceforge.net/projects/roost/ A7FCA99303212CCF47D94A3F2EE915D5 DC9C0C0A15523A1FBA43775F05F089C16CF2C060 @凌童鞋 关于http://rpg.blue/forum.php?mod=vi ... 6orderby%3Dlastpost Roost.CFactory: Roost.libTCC 已经改为Roost.CFactory以tcc作为C后端,而RGSS作为语法前端的一个工具,Roost.PP 是使C语法向Ruby语法过渡的预处理器模板类,出于灵活性,尚需实现具体的预处理器,也就是说,描述的是如何把写的代码转换成C。Roost.CUtils.CPP1是一个具体的预处理代码,是一个低级的预处理器,如export{add}表示导出add符号,而不需要写麻烦的__declspec(dllexport) __stdcall add,实现见工程。Roost.Static 是一个Cache模块,对应实现了类型Roost::Static::StaticClass。Roost.Dynamic 和Roost.Dynamic.DynClass  使DLL的使用和Ruby无缝接触,尽量简化操作,至少简化了.call和参数说明,对于浮点类型和其他类型有待完善,下面是测试代码中的一段class  Wnd; end ;
  SW_SHOW = 5 
  SW_HIDE = 0 
  xx=Roost::Dynamic::DynClass .new ( 'user32' , 
    { :__ctor => "CreateWindowExA" ,
     :__dtor  => "DestroyWindow" 
    } ) 
  xx.attach ( Wnd) ;
  #上面为定义 
  r = Wnd.new 
  r.dyncreate  0 , "Button" , "Hello" , 0x10cf0000, 0 , 0 , 640 , 480 , 0 , 0 , 0 , 0 
  r.ShowWindow   SW_SHOW
  r.MessageBoxA  "Hello" ,Roost::CharConv .u2s ( "从子窗口获得的信息" , 128 ) , 16 
  r.ShowWindow  SW_HIDE
  r.dynuninit 
class  Wnd; end ;
  SW_SHOW = 5 
  SW_HIDE = 0 
  xx=Roost::Dynamic::DynClass .new ( 'user32' , 
    { :__ctor => "CreateWindowExA" ,
     :__dtor  => "DestroyWindow" 
    } ) 
  xx.attach ( Wnd) ;
  #上面为定义 
  r = Wnd.new 
  r.dyncreate  0 , "Button" , "Hello" , 0x10cf0000, 0 , 0 , 640 , 480 , 0 , 0 , 0 , 0 
  r.ShowWindow   SW_SHOW
  r.MessageBoxA  "Hello" ,Roost::CharConv .u2s ( "从子窗口获得的信息" , 128 ) , 16 
  r.ShowWindow  SW_HIDE
  r.dynuninit 
#include <windows.h> 
//链接user32.dll的代码 
//上面为定义 
HWND h = CreateWindowExA( 0 , "Button" , "Hello" , 0x10cf00000, 0 , 0 , 640 , 480 , 0 , 0 , 0 , 0 ) ;
ShowWindow( h, SW_SHOW) ;
MessageBox( h, "Hello" , "..." , 16 ) ;
ShowWindow( h, SW_HIDE) ;
DestroyWindow( h) ;
#include <windows.h> 
//链接user32.dll的代码 
//上面为定义 
HWND h = CreateWindowExA( 0 , "Button" , "Hello" , 0x10cf00000, 0 , 0 , 640 , 480 , 0 , 0 , 0 , 0 ) ;
ShowWindow( h, SW_SHOW) ;
MessageBox( h, "Hello" , "..." , 16 ) ;
ShowWindow( h, SW_HIDE) ;
DestroyWindow( h) ;
Roost::CUtils 是一组实用工具对象,在下会慢慢完善xx=DynClass.new ( 'rbmp.rax' , { 
      :__ctor =>:getBitmap,
      :__dtor =>:releaseBitmap,
  } ) 
  xx.attach ( Bitmap) 
xx=DynClass.new ( 'rbmp.rax' , { 
      :__ctor =>:getBitmap,
      :__dtor =>:releaseBitmap,
  } ) 
  xx.attach ( Bitmap) 
a,b =RPG::Cache .battler ( '001-Fighter01' , 0 ) ,   RPG::Cache .battler ( '001-Fighter01' , 0 ) 
#就可以 
a.dyninit ;   b.dyninit 
a.op2 ( b, "ab+a=" , -1 )      #逆波兰式 a=a+b(仅仅是抛砖引玉  
=begin 
 或者 
a.op2(0, "aHa=", -1)                     # a=水平翻转(a) 
a.op2(b, "aaHb&+a=", -1)            # a=a+水平翻转(a) 位与 b 
=end 
b.dynuninit ; a.dynuninit 
a,b =RPG::Cache .battler ( '001-Fighter01' , 0 ) ,   RPG::Cache .battler ( '001-Fighter01' , 0 ) 
#就可以 
a.dyninit ;   b.dyninit 
a.op2 ( b, "ab+a=" , -1 )      #逆波兰式 a=a+b(仅仅是抛砖引玉  
=begin 
 或者 
a.op2(0, "aHa=", -1)                     # a=水平翻转(a) 
a.op2(b, "aaHb&+a=", -1)            # a=a+水平翻转(a) 位与 b 
=end 
b.dynuninit ; a.dynuninit 
1 个临时图片,所以说"a~b~"是会覆盖的,使用了逆波兰式,http://rpg.blue/thread-200922-1-1.html  @DeathKing )a b r           参数1入栈 参数2入栈 上次的结果入栈H V F ~      分别是弹出栈顶一个元素 进行水平翻转,竖直翻转,H+V的翻转,取反,结果入栈+ - & | ^    分别是弹出栈顶二个元素 进行像素加,像素减,像素与,像素或,像素异或,结果入栈,ab-的结果是a-b=               栈顶二个元素的复制,ab=的意思是b=a,请不要弄反了……