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


HSPTV!掲示板


未解決 解決 停止 削除要請

2007
0911
ひろマウスポインタの影響5解決


ひろ

リンク

2007/9/11(Tue) 21:24:15|NO.11023

複数の短い文を順番に7秒間隔で画面上
やメッセージボックスに表示し、同時に
その音声を鳴らそうとしています。wait
を使って7秒の間隔をあけ、文の表示も
音声の再生もとりあえずうまくいきまし
た。ところが、マウスのポインタがメッ
セージボックスやチェックボックスの枠
に触れたとたんに次の文が表示され、音
声が再生されてしまいます。waitで間隔
をあけること自体が間違っているのでし
ょうか。メッセージボックスは編集可能
な状態から不可の状態に切り替えたり、
不可のときにボックス内が白色のままで
あるようにしています。インプットボッ
クスではこのようなことは起こりません。
よろしくお願いします。



この記事に返信する


D

リンク

2007/9/12(Wed) 21:02:01|NO.11041

実際どのようにして表示・再生を行っているのか具体的に示さないと
原因を調べるのは難しいかと、、

少なくともこれでそんなことにはなりません


mmload dir_win + "\\Media\\ding.wav" a="" mesbox a,100,100 chkbox "test",test wait 700 a = "7秒経過" objprm 0,a mmplay wait 700 a = "14秒経過" objprm 0,a mmplay wait 700 a = "21秒経過" objprm 0,a mmplay stop



ひろ

リンク

2007/9/12(Wed) 22:43:30|NO.11043

Dさん返信ありがとうございます。スクリプトは概ね
以下のようなものです。初心者であるため、人のを見
よう見まねで書いており自分で理解できていません。
なぜ wait 10 を入れるとうまくいく(?)のかもわ
かりません。インプットボックスも書き換え不可にす
ると同じ症状が出ます。よろしくお願いします。

#uselib "gdi32" #cfunc GetStockObject "GetStockObject" int #func SetBkMode "SetBkMode" int, int mmload dir_win + "\\Media\\ding.wav" a="" mesbox a,100,100,1 hMesbox = objinfo (stat, 2) hBrush = GetStockObject () oncmd gosub *ctlcolorstatic, $138 b="" input b,100,100 hInput = objinfo (stat, 2) sendmsg hMesbox, $CF, 1 sendmsg hInput, $CF, 0 chkbox "test",test wait 10 a = "7秒経過" wait 700 objprm 0,a mmplay wait 10 a = "14秒経過" wait 700 objprm 0,a mmplay wait 10 a = "21秒経過" wait 700 objprm 0,a mmplay wait 10 stop *ctlcolorstatic if lparam = hInput | lparam = hMesbox { SetBkMode wparam, 1 return hBrush } return



D

リンク

2007/9/13(Thu) 00:39:08|NO.11044

う〜ん、ちょっと分かりませんね
もうちょっと詳しい人の回答を待った方がいいかもしれません

ただ決められた時間に動作させるならタイマー式にした方が便利かもしれません
ミリ秒単位で取得する必要性は無いですけど・・・


#uselib "gdi32" #cfunc GetStockObject "GetStockObject" int #func SetBkMode "SetBkMode" int, int hBrush = GetStockObject () oncmd gosub *ctlcolorstatic, $138 mmload dir_win + "\\Media\\ding.wav" time_flg = 1 x = 0 a="7秒ごとに更新" b="" input b,60,20 hInput = objinfo (stat, 2) sendmsg hInput, $CF, 1 mesbox a,100,100,1 hMesbox = objinfo (stat, 2) sendmsg hMesbox, $CF, 1 repeat if time_flg { dim time_flg start_time = double ((gettime (5) * 60000) + (gettime (6) * 1000) + gettime (7)) / 1000 } check_time = double ((gettime (5) * 60000) + (gettime (6) * 1000) + gettime (7)) / 1000 if check_time < start_time { check_time + 3600000 } time = check_time - start_time if time > 6.999 { x++ a = strf ("%03d",x) + "回目表示" objprm 1, a mmplay time_flg = 1 } objprm 0, strf ("%6.3f",time) await 1 loop *ctlcolorstatic if lparam = hInput | lparam = hMesbox { SetBkMode wparam, 1 return hBrush } return



f

リンク

2007/9/13(Thu) 00:43:32|NO.11045

・・・何を意図してAPI使っているのかまるで見えないが、
	*ctlcolorstatic
dialog "call"
として見た所、クリックするとoncmdでサブルーチンに飛んでいるな。
wait中に呼び出されるとwaitがそこで終了してgosubがかかり、returnで「次の行」に戻っているのだろう。
oncmdに反応するかどうかが、waitが終了するかしないかの分かれ目だ。

ぶっちゃけ、そのAPI部分、全部コメントアウトすれば意図どおり動くんじゃね?

つーか、どうせAPIつかうならwait使わずgetTimeGetで待機の開始時間と終了時間を自分で管理すりゃ
対処もできるんじゃね?



ひろ

リンク

2007/9/13(Thu) 22:46:03|NO.11048

Dさん、fさん、ありがとうございました。タイマーで
うまくいきました。fさん、初心者なので getTimeGet
は私にはわかりませんでした。でも、ご親切に返信いた
だきありがとうございました。



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