タイマ更新中のリストボックスのファイル保存

[戻る]
ごん 2011/08/01(月) 10:00:05
開発環境はVC++6.0です。

タイマで一定周期にリストボックスを更新し、そのリストボックスの内容をボタン押下で
テキストファイルに保存しようと考えています。

現在、GetSaveFileNameでファイルを指定し保存を行っていますが、タイマをkillしない
とエラーとなってしまう為、ボタン押下時にコールするモジュールの先頭でkillしました
がタイマの再設定はどのように行ったらいいのでしょうか?

それとも根本的にやり方が違うのでしょうか?
ご教授お願い致します。

質問に不備がありましたら申し訳ありません。

ホウジョウウサギ 2011/08/01(月) 13:05:11
保存操作が終わったら再設定すればよいのではないでしょうか.
ボタン押下時の処理を

 タイマをkill(KillTimer?)
→ファイル指定して保存
→タイマ再設定(SetTimer?)

とするだけではダメなのでしょうか?

ごん 2011/08/01(月) 13:23:53
ホウジョウウサギさん

"ファイル指定して保存"部分をコメントにすれば、SetTimerでタイマの再設定は正常に動
作するのですが、
"ファイル指定して保存"とSetTimerを記述し、実行すると強制終了してしまいます。

maru 2011/08/01(月) 15:08:37
問題点が不明確ですね。

> 現在、GetSaveFileNameでファイルを指定し保存を行っていますが、タイマをkillしな> とエラーとなってしまう為、
エラーの内容が分からないと対策は立てられないですよね。
逆にエラーの内容を把握し、原因がはっきりわかればほとんど対策できたようなもので
す。(原因がわかっても対策できないものも多々ありますが。)

> "ファイル指定して保存"とSetTimerを記述し、実行すると強制終了してしまいます。
どこで終了しているかわかっていますか?
デバッガを使って調べることは可能ですよね。
強制終了するだったら例外が発生しているのだと思いますが、そこ(例外が発生する場
所)のコードを出してみたらいかがでしょう。

ITO 2011/08/01(月) 16:41:20
> タイマで一定周期にリストボックスを更新し、
> そのリストボックスの内容をボタン押下でテキストファイルに保存しようと
> 考えています。
作業を3つに分けてみたらどうですか?

1. タイマで一定周期にリストボックスを更新する。
2. そのリストボックスの内容をボタン押下でフラグを立てる。
3.フラグが立っていてかつリストボックスの更新中でないときに
  テキストファイルに保存する。

ホウジョウウサギ 2011/08/01(月) 17:20:54
他の方もおっしゃっていますが,
まずは終了してしまうのが

(1)GetSaveFileName()でファイル選択のダイアログを出す前
(2)ファイル名を選択した後で,保存処理が始まる前
(3)ファイル保存処理中
(4)保存処理後,SetTimerよりも前

のどのあたりなのかを突き止めてみると良いかと思います.

ごん 2011/08/01(月) 17:48:18
[[解決]]
デバッガで追ってみましたがどこで終了しているのかわからず・・・

皆さんのレスを参考にし、いろいろ試行錯誤したところ
どうやらタイマ処理の内容自体に問題があるようです。

質問の内容と異なる問題の為、一旦こちらは〆させて頂きます。
あいまいな質問にも関わらず本当にありがとうございました。
大変助かりました。

古いスレッドには追加発言できません。