• ベストアンサー

一時停止と再開

今、Visual Basic でスライドショーのプログラムを作っています。 その中で、プログラムの一時停止(それに伴う再開)という事をしたいのですが、どのようにすればよいかわかりません。 教えて下さい。お願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • TAGOSAKU7
  • ベストアンサー率65% (276/422)
回答No.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の操作で充分です

gotkat
質問者

お礼

丁寧に回答していただいてありがとうございます。

その他の回答 (4)

  • TAGOSAKU7
  • ベストアンサー率65% (276/422)
回答No.4

#2の発言のARCに質問です。 >Sleep 100 '100ミリ秒待機する とありますが、これは意味があるのですか? VBの処理にロックがかかるだけで、意味がないのでは?

  • TAGOSAKU7
  • ベストアンサー率65% (276/422)
回答No.3

>スライドショーのプログラム とあるので、きっとタイマーコントロールで定期的に画像を更新しているのでは? もしその場合#1さんの発言の方がいいかも? PublicもしくはPrivateでフラグの宣言 フラグのデフォルト=0 タイマーイベントでフラグが0の時以外は処理を抜ける。 一時停止ボタンの機能:フラグ=1 一時停止解除ボタンの機能:フラグ=0 もしさっきの推測がはずれならば、どのようにスライドショーの画面の更新が行われているかが気になりますね。

gotkat
質問者

お礼

ご推測の通りです。説明不足ですみません。 僕のプログラムがまずいらしく、上述の方法がうまく出来ません。 それで、 一時停止ボタンの機能:Timer1.Enabled=False 一時停止解除ボタンの機能:Timer1.Enabled=True としたら出来ました。これらのボタンを押して欲しくないときは、 Command1.Enabled=False としています。このやり方でいいんでしょうか? まだVisual Basicを始めたばかりなので、参考になりました。 ありがとうございます。

  • ARC
  • ベストアンサー率46% (643/1383)
回答No.2

途中で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)
回答No.1

>一時停止 ボタンクリックで、 val_restart = 0 do   doevents   if val_restart = 1 then exit do end if loop >再開  ボタンクリックで  val_restart = 1 やってることわかります? (試してないので、自信なし)

gotkat
質問者

お礼

ありがとうございます。 さっそくやってみます。