- ベストアンサー
一時停止と再開
今、Visual Basic でスライドショーのプログラムを作っています。 その中で、プログラムの一時停止(それに伴う再開)という事をしたいのですが、どのようにすればよいかわかりません。 教えて下さい。お願いします。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
Enabledの操作で充分だと思いますよ。 ちなみに先ほどの方法の処理を書くと(フラグの1と0の値が変わってますが・・・) Private bytFlg As Byte Private Sub cmdPause_Click() bytFlg = 0 End Sub Private Sub cmdPlay_Click() bytFlg = 1 End Sub Private Sub Form_Load() bytFlg = 0 End Sub Private Sub Timer1_Timer() If bytFlg = 1 Then 'ここに画像読み込み処理 End If End Sub とするとできます。 しかし、画像の読み込みを必要としないときもタイマーが動いているので、Windowsに負荷がかかります。 だからgotkatさんの今までのEnabledの操作で充分です
その他の回答 (4)
- TAGOSAKU7
- ベストアンサー率65% (276/422)
#2の発言のARCに質問です。 >Sleep 100 '100ミリ秒待機する とありますが、これは意味があるのですか? VBの処理にロックがかかるだけで、意味がないのでは?
- TAGOSAKU7
- ベストアンサー率65% (276/422)
>スライドショーのプログラム とあるので、きっとタイマーコントロールで定期的に画像を更新しているのでは? もしその場合#1さんの発言の方がいいかも? PublicもしくはPrivateでフラグの宣言 フラグのデフォルト=0 タイマーイベントでフラグが0の時以外は処理を抜ける。 一時停止ボタンの機能:フラグ=1 一時停止解除ボタンの機能:フラグ=0 もしさっきの推測がはずれならば、どのようにスライドショーの画面の更新が行われているかが気になりますね。
お礼
ご推測の通りです。説明不足ですみません。 僕のプログラムがまずいらしく、上述の方法がうまく出来ません。 それで、 一時停止ボタンの機能:Timer1.Enabled=False 一時停止解除ボタンの機能:Timer1.Enabled=True としたら出来ました。これらのボタンを押して欲しくないときは、 Command1.Enabled=False としています。このやり方でいいんでしょうか? まだVisual Basicを始めたばかりなので、参考になりました。 ありがとうございます。
- ARC
- ベストアンサー率46% (643/1383)
途中でSleepを挟んだ方がいいかも。 (Genaral) (Declarations)に Private Declare Sub Sleep Lib "KERNEL32" (ByVal dwMilliseconds As Long) って行を追加しまして、 Do Until 終了条件 Sleep 100 '100ミリ秒待機する DoEvents Loop のようにします。
- ykkw_2001
- ベストアンサー率26% (267/1014)
>一時停止 ボタンクリックで、 val_restart = 0 do doevents if val_restart = 1 then exit do end if loop >再開 ボタンクリックで val_restart = 1 やってることわかります? (試してないので、自信なし)
お礼
ありがとうございます。 さっそくやってみます。
お礼
丁寧に回答していただいてありがとうございます。