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


HSPTV!掲示板


未解決 解決 停止 削除要請

2008
0521
KL常時アクティブ・ID別end方法7解決


KL

リンク

2008/5/21(Wed) 17:34:08|NO.15963

2点質問です。

‘団蠅離Εンドウを常にアクティブにする方法
ID別に終了させる方法


//例 *realtime screen 0,640,480 month=gettime(1) day=gettime(3) time=gettime(4) minute=gettime(5) second=gettime(6) button "別処理", *ahandle mes ""+month+"月"+day+"日"+time+"時"+minute+"分"+second+"秒" onexit *exit wait 100 goto *realtime *ahandle screen 1,320,240 mes "別の処理" onexit *exit stop *exit dialog "終了",2 if stat = 7 :stop end

上記のような状態で別窓(ID1)を開いている際にも常にウィンドウID0をアクティブに
したいのですがどのようにすればよいのでしょうか?
上記の状態ですと、終了ルーチンのダイアログが開いてる際にもID0はカウント
を止めてしまうのですが、どのようにすればいいのでしょうか?

また、終了ルーチンの際ウィンドウID1のみを消して、ID0は処理を続行と言うように
したいのですが、どうすればいいでしょうか?
gselの-1でやってみたのですが、非表示になるだけで完全に消去されなく、本体のend
処理をしても、非表示分が残っているらしく永遠に終了されなくなってしまいました。

初歩的な質問かもしれませんが、助言お願いいたします。



この記事に返信する


たこ

リンク

2008/5/21(Wed) 17:57:23|NO.15964

ヒント
WM_TIMER
DestroyWindow



KL

リンク

2008/5/21(Wed) 19:15:44|NO.15967

>>たこさん
レスありがとうございます。

今作ろうと思っているのはタイマーではなく、どの様な状況下でもアクティブになると
言う物を作りたいと思っています。(例えば、ダイアログが開かれた時、別ウィンドウが
開かれた時、その他別フラグが立った時でも常に↑の場合ですとウィンドウID0は動いている
と言うものです。)
上記のタイマースプリクトはリアルタイムで動くので見やすいかなと思って作った、ただの例ですごめんなさい。



jill

リンク

2008/5/21(Wed) 19:30:09|NO.15968

HSPはマルチスレッドに対応していないと思います。
処理を交互に移して視覚的(擬似的)になら出来そうな気はしますが。。



ANTARES

リンク

2008/5/21(Wed) 21:28:11|NO.15970


screen 0,640,480 dim disp,2 disp(0)=1 button "別処理", *ahandle onexit *exit *realtime month=gettime(1) day=gettime(3) time=gettime(4) minute=gettime(5) second=gettime(6) color 255,255,255 boxf 0,32,640,48 color pos 0,32 mes ""+month+"月"+day+"日"+time+"時"+minute+"分"+second+"秒" wait 100 goto *realtime *ahandle screen 1,320,240 disp(1)=1 gsel 0,1 gsel 1 mes "別の処理" gsel 0 goto *realtime *exit active=ginfo(2) dialog "終了",2 if stat = 7 : gsel 0,1:goto *realtime gsel active,-1 disp(active)=0 if disp(1-active)==1 { if active==0: stop gsel 0,1 goto *realtime } end



ANTARES

リンク

2008/5/21(Wed) 22:27:58|NO.15973

>処理を交互に移して視覚的(擬似的)になら出来そうな気はしますが。
 それがマルチスレッドです。
最近はマルチCPUもそんなに珍しくなくなってきましたが、
少し前まではマルチスレッドと言えば擬似的なものが普通でした。


#include "user32.as" #define WM_TIMER 275 event=1 SetTimer hwnd, varptr(event), 100, 0 oncmd gosub *l_timer, WM_TIMER screen 0,640,480,,0,0 dim disp,2 disp(0)=1 button "別処理", *ahandle onexit *exit stop *ahandle screen 1,320,240,,650,0 disp(1)=1 gsel 0,1 i=0 *l_loop repeat: wait 1 i++ oncmd 0 gsel 1 title ""+i oncmd 1 wait 100 loop *l_timer if disp(0)==0: return if ginfo(2)==1: gsel 0,1 tmp=gettime(6) if tmp==second: return month=gettime(1) day=gettime(3) time=gettime(4) minute=gettime(5) second=gettime(6) gsel 0 color 255,255,255 boxf 0,32,640,48 color pos 0,32 mes ""+month+"月"+day+"日"+time+"時"+minute+"分"+second+"秒" return *exit active=ginfo(2) dialog "終了",2 if stat = 7 { if disp(0): gsel 0,1 if disp(1): goto *l_loop stop } gsel active,-1 disp(active)=0 if disp(1-active)==1 { if active==0: gsel 0: KillTimer hwnd,event: goto *l_loop stop } if active==0: gsel 0: KillTimer hwnd,event end



jill

リンク

2008/5/21(Wed) 23:38:18|NO.15975

なるほど、マルチプロセッサの動作とマルチスレッドの動作を混合してました。
pen4自作からPC初めて(現在もメインです)ハイパースレッジ?だったかな?
スレッジ、スレッジ、スレッジ、スレッド、スレッド、スレッド、マルチスレッド。。。
こんな風な知識で同じことだと思ってました。
勉強になりました。有難うございます。

調べてみたらマルチスレッドプログラムは結構難しそうですね。
複数スレッドだとそれぞれの終了時間考慮しないといけないみたいで、チャレンジしがいはありますが
HSPは動作が遅いとか良く見るので、向いていないみたいですね



KL

リンク

2008/5/22(Thu) 16:35:50|NO.15978

>>たこさん
>>jillさん
>>ANTARESさん

大変参考になりました。
助言を元に自分なりに調べ、なんとか当方が思うような動作に近づいてきました。
一応解決とさせて頂きます。ありがとうございました



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