RPGツクール VX Ace:RGSS3ではできない機能拡張を行う

火曜日 , 26, 7月 2016 Leave a comment

 RGSS3の組み込みクラスだけでは、できない処理がある。

 例えばマウスの座標を取得したいなど。

 

 その場合、dllを作成してRubyからそれを叩く必要がある。

 

dllの作成

 

 プロジェクトはC++の「Win32プロジェクト」。

 C#でdllを作成したいところだが、Rubyからマネージドなdllはコールできないので、C++を選択。

 

004

 

 特定のウィンドウのマウス座標の取得は少し面倒だが、今回の趣旨ではないので、割愛。需要があったら別途書きます。

 dllは以下のように2つのメソッドを持つものとします。

 

EXPORT int getMouseXpos();
EXPORT int getMouseYpos();

 

 ビルドで生成したdllをRPGツクール側のSystemフォルダ以下に配置します。

 

dllを呼び出す

 

 RGSS3側でdllの読み込みと、メソッドの呼び出しを記述します。dllはhoge.dllというファイル名とします。

 

#dll読み込み
xPosAPI = Win32API.new('System/hoge', 'getMouseXpos', nil, 'i')
yPosAPI = Win32API.new('System/hoge', 'getMouseYpos', nil, 'i')

#メソッド呼び出しのサンプル
while 1 do
    x = xPosAPI.call()
    y = yPosAPI.call()
    p "X = " + x.to_s + "/ Y = " + y.to_s
end

 

 サンプルはループを抜けずにずっとマウス座標を取り続けるので、実際に使う場合は用途に合わせて修正してください。

 


Please give us your valuable comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です