電子書籍の厳選無料作品が豊富!

プログラム初心者です。現在Win32APIを用いて、簡単なプログラムを作成中です。質問させてください!

今、現在私の作っているアプリケーションのウインドウ上にあるボタンを押すと(例 case IDC_BUTTON1の時、)

(1)そのボタンを押してから10秒ほどたったあとに、

あるMessageBoxを表示させたいと考えております。

↑の(1)のところをどうプログラムで書けばいいのかわかりません。
アドバイスよろしくお願い致します!!

A 回答 (3件)

タイマを設定します。


SetTimer(hwnd, 1, 1000, NULL)で1秒間隔でWM_TIMERがスケジュールされます。
そのボタンが押されたこと(フラグなど)を確認してから、10回目にMessageBoxを表示させれば、貴殿の望むことができます。
    • good
    • 0
この回答へのお礼

迅速なお返事ありがとうございます!
SetTimer関数、とても便利ですね!とても助かりました。ありがとうございました。

お礼日時:2006/11/28 22:06

#2さんのタイマを設定する方法の補足です。



タイマを1秒に設定しても、必ず1秒おきにWM_TIMERが発生するわけではないので、

1.ボタンが押されたら、GetTickCountで現在の時間を取得し保存、タイマを設定する
2.WM_TIMERのイベントハンドラでGetTickCountを呼び出し、ボタンが押された時の時間との差が、10000以上なら、MessageBoxで表示

という感じが良いのではないでしょうか。
    • good
    • 0
この回答へのお礼

お返事ありがとうございます!
ご丁寧にご教授くださり、とても助かります。GetTickCount関数を調べ、さっそく作成途中のプログラムを改良していきたいと思います。
ありがとうございました!

お礼日時:2006/11/28 22:10

情報が不足しています。



その10秒間は何もできない時間でしょうか。
それならば、適当にループを回して時間を稼げばOK。
他の操作も可能というのであれば、割り込みを使って割り込みが発生(10秒後)したらメッセージボックスを表示するルーチンを実行するように作る。
 ※この辺りについては使用しているライブラリなどによるので具体的な記述は致しません。
    • good
    • 0
この回答へのお礼

迅速なお返事ありがとうございます。
他の操作も可能であるプログラムにしようと考えてます。情報不足で申し訳ございません。アドバイスありがとうございました。

お礼日時:2006/11/28 22:03

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!