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


HSPTV!掲示板


未解決 解決 停止 削除要請

2009
0215
シルバー・ソードウィンドウのアクティブから非アクティブに変わった際の処理について2解決


シルバー・ソード

リンク

2009/2/15(Sun) 13:11:06|NO.23403

指定ウィンドウがアクティブから非アクティブに変わった瞬間に、今ある命令を一時停止する方法が分かりません。
例として、HSPプログラムからデスクトップに切り替わった瞬間に、以下のrepeat〜loop区間の命令を一時停止したいです。
repeat
stick key if ginfo(2)==-1 { while ginfo(2)==-1 : key=0 : wait : wend } if key==256 & ginfo(2)==0 : break loop
この後、アクティブになった状態で再びクリックされたらループ区間を抜けたいのです。

非アクティブからアクティブに切り替わった際の一時停止プログラムは出来ているのですが、上記のやり方のみ分かりません。
標準命令のみで実行したいので、もしよろしければ教えてください。



この記事に返信する


panda

リンク

2009/2/15(Sun) 13:31:34|NO.23405

WM_ACTIVATE を使ったほうが効率がいいかもしれません。
そのスクリプトでは、起動時にCPUを食うみたいですし…。


#define WM_ACTIVATE 0x0006 oncmd gosub *lb_WM_ACTIVE,WM_ACTIVATE p=2 gsel 0,2 *main ;アクティブ時の処理 if(active >= 0){ redraw 0 color 255,255,255 boxf color 0,0,0 boxf 0,0,x,480 x+p redraw 1 if (x>640){ p = -2 } if (x<0){ p = 2 } } ;非アクティブ時の処理 if(active < 0){ redraw 0 color 255,255,255 boxf color 0,0,0 : pos 10,10 mes "非アクティブです" redraw 1 } wait 1 goto *main *lb_WM_ACTIVE if(wparam == 0){ title "非アクティブです" active=-1 } else { active=0 title "アクティブです" } return



シルバー・ソード

リンク

2009/2/17(Tue) 22:25:59|NO.23450

遅くなりましたが、無事、実装することができました。
pandaさん、教えて下さり誠にありがとうございます。



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