HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2012
1105
☆ありゅ☆HSPのウインドゥが最前面じゃない時に、HSPの実行画面を動かさない方法5解決


☆ありゅ☆

リンク

2012/11/5(Mon) 03:12:49|NO.50481

初めての投稿です。よろしくお願いします。
ゲームを作る際、配列でマップを作るのにマップエディタを作ろうと思いました。
そして、画面の指定した箇所をクリックすると、マップチップが置けたり、
キーボードの矢印キーで視点変更をするという仕様にしました。

その際、getkeyでキーボードやマウスの指定されたボタンが押されたのを把握し、
マップチップを配置したり、保存や移動などをするようにしました。
一応ソース乗っけておきます。


getkey mousl,1 //左クリック getkey mousr,2 //右クリック getkey ky1,17;CTRLボタンを押してるか getkey ky8,79;oボタンを押してるか getkey ky0,83;sボタンを押してるか getkey ky4,37;左ボタンを押してるか getkey ky5,38;上ボタンを押してるか getkey ky6,39;右ボタンを押してるか getkey ky7,40;下ボタンを押してるか if kf = 0 & ky0 = 1 & ky1 = 1 : gosub *save //CTRL + S if kf = 0 & ky8 = 1 & ky1 = 1 : gosub *load //CTRL + O if kf = 0 & ky4 = 1 & lx > 0 : lx -= 8*32 : kf = 1 //→でマップチップ画面を右に移動させる if kf = 0 & ky6 = 1 & lx < mapx * 32 - 16 * 32 : lx += 8*32 : kf = 1 //←でマップチップ画面を左に移動させる if kf = 0 & ky5 = 1 & brock < 10 : brock++ : kf = 1 //上下でマップチップ選択 if kf = 0 & ky7 = 1 & brock > 0 * 32 - 16 * 32 : brock-- : kf = 1 //上下でマップチップ選択 if kf = 1 & ky4 = 0 & ky6 = 0 & ky5 = 0 & ky7 = 0 : kf = 0 //1度押して一気に数値が変わるのを防止 if mousl = 1 : map(int(mousex + lx)/32,int(mousey)/32) = brock //マップチップを配置 if mousr = 1 : map(int(mousex + lx)/32,int(mousey)/32) = 0 //マップチップを除去

その際、別のウインドゥを選択し、CTRL+Sを押すと、HSPの実行画面もCTRL+Sが実行されてしまったり、
別のウインドゥでクリックをすると、HSPの実行画面でも変な所がクリックされたイベントが発生します。


要は、HSPのウインドゥが最前面じゃない時に、HSPの実行画面を動かさない方法は有りますか?
という所です。


何か良い対策は有りませんか?
検索かけてもなかなか見つからないので、この場をお借りして質問する事にしました。
既出の質問でしたらすみません。



この記事に返信する


てん

リンク

2012/11/5(Mon) 03:23:40|NO.50482

現在、HSPのウィンドウにフォーカスがあるかどうかを判断、フォーカスが無いならキーチェックをスキップすればOK



cats

リンク

2012/11/5(Mon) 17:38:28|NO.50490

ちなみに今最前面のウィンドウハンドルは
GetForgroundWindowで取得ですます。

#uselib "user32.dll" #cfunc GetForegroundWindow "GetForegroundWindow" COUNT=0 *main if GetForegroundWindow()=hwnd{ //hspのウィンドウが最前面のとき title "HSPのウィンドウがが最前面です ("+COUNT+")" COUNT+ //ここに最前面時の処理を書く } await 10 goto *main



暇人

リンク

2012/11/5(Mon) 19:06:32|NO.50492


repeat stick k id=ginfo(2) if id < 0 { title "HSP以外のウィンドウがアクティブ" }else{ if k{mes " X="+mousex+" Y="+mousey} title "HSP Screen ID"+id+" がアクティブ"+" X="+mousex+" Y="+mousey } await 16 loop



cats

リンク

2012/11/5(Mon) 23:36:56|NO.50505

>暇人さんのスクリプト
アクティブじゃないときはginfo(2)に-1が入るんだ・・・
知らなかった・・・



☆ありゅ☆

リンク

2012/11/6(Tue) 00:43:35|NO.50509

お答えしていただいた皆さんありがとうございました!
お応えいただいた方法で解決したので、〆させていただきます。
勉強になることが沢山有る回答が多くて嬉しかったです!

また調べて自己解決出来なくなったら来るかもしれないので、
その時はよろしくお願いします。
ありがとうございました。



ONION software Copyright 1997-2023(c) All rights reserved.