操作があるまでループし続けるには

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
山崎

操作があるまでループし続けるには

#1

投稿記事 by 山崎 » 15年前

こんにちは、お世話になっております、山崎です。
今回は、DXライブラリを使わずに、whileループ内の処理をキーボードなどからの操作があるまで
繰り返す処理の仕方について伺いに参りました。

現在、カメラとあるセンサーからの出力を、任意の時間 ファイルに記録し続ける、
というプログラムを作ろうとしております。
なお、環境はXPにVisualStudio2008です。

そこで、次のような流れのプログラムを作ろうと考えております。
1.プログラムを開始させる
2.一定時間ごとに、カメラとセンサーからの出力を自動でファイルに保存する
3.キーボードの何かのキーが押された時、プログラムを終了する

上の2の処理は、whileループを使って繰り返し出力を得たいと思っています。
しかし、whileループを実行している時、プログラムの実行を停止させることなく
キーボードからの入力を待つ、というのをどうすれば実現できるのかわかりません。

このプログラムは趣味のゲームプログラムではないので、
DXライブラリの使用はなるべく避けたいと思っています。

どのようにすれば、ループの処理を止めずに、
キーボードからの入力を受け付けられるのでしょうか。

softya

Re:操作があるまでループし続けるには

#2

投稿記事 by softya » 15年前

ウィンドウアプリならMFCかWin32APIでWM_TIMERメッセージを使った処理を作れば良いと思います。
WM_TIMERメッセージの周期を設定するには、SetTimer()を使用します。
http://msdn.microsoft.com/ja-jp/library/cc411200.aspx
キーボードの入力も同様にメッセージとして受け取ります。

コンソールアプリなら、Whileループ中にSleep(100)ぐらいでスリープしないと無限ループとOSに思われてしまうので、まずSleep()をループの中に入れて下さい。
で、キーボードはkbhit()で押されたことを検知します。
↓使い方。
http://www.orchid.co.jp/computer/cgame/cgm7.html

山崎

Re:操作があるまでループし続けるには

#3

投稿記事 by 山崎 » 15年前

softyaさん
ご返信、誠にありがとうございます。
コンソールのプログラムであることも明記しておくべきでした、お手数をおかけしました。
しかしウィンドウズアプリケーションの場合での方法も知ることができ、大変感謝しております。
ちょっと諸事情あり、今すぐそのプログラムを組んで試すことはできないのですが、
きっとお教え頂いたページのサンプルがあれば実装できることと思います。

kbhit()なんて関数があるのですね…。初めて知りました。
私の愛用しているC/C++リファレンスに無い関数だと、
なかなか知る機会がなくてたまに苦労します。

本当にありがとうございました。

閉鎖

“C言語何でも質問掲示板” へ戻る