• ベストアンサー

Windowsプログラミングについて。

プログラム初心者です。現在Win32APIを用いて、簡単なプログラムを作成中です。質問させてください! 今、現在私の作っているアプリケーションのウインドウ上にあるボタンを押すと(例 case IDC_BUTTON1の時、) (1)そのボタンを押してから10秒ほどたったあとに、 あるMessageBoxを表示させたいと考えております。 ↑の(1)のところをどうプログラムで書けばいいのかわかりません。 アドバイスよろしくお願い致します!!

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

  • ベストアンサー
  • syama2006
  • ベストアンサー率38% (14/36)
回答No.2

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

C-Disney
質問者

お礼

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

その他の回答 (2)

  • tettsu
  • ベストアンサー率30% (4/13)
回答No.3

#2さんのタイマを設定する方法の補足です。 タイマを1秒に設定しても、必ず1秒おきにWM_TIMERが発生するわけではないので、 1.ボタンが押されたら、GetTickCountで現在の時間を取得し保存、タイマを設定する 2.WM_TIMERのイベントハンドラでGetTickCountを呼び出し、ボタンが押された時の時間との差が、10000以上なら、MessageBoxで表示 という感じが良いのではないでしょうか。

C-Disney
質問者

お礼

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

  • Cupper
  • ベストアンサー率32% (2123/6444)
回答No.1

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

C-Disney
質問者

お礼

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

関連するQ&A