質問したいことをうまく表現できませんが,よろしくお願いします.
例えば,あるFORループがあるとします.
int flag=0;
for(i=0;i<5000;i++){
if(flag){
********************
*****************
}
}
例えばリターンキーを押すとflagが1になり,
**部が実行されるようにしたいのです.
しかし,やってみたところ,forループを実行中は
パソコンが忙しいみたいで,リターンキーの命令を
受け付けてくれるのは,そのループが終わった時に
なってしまうのです.
では,具体的に何を目的としているのかと
思われるのでご説明します.
学校の研究室では,このほど高速度カメラ(1/1000[s])の
購入を決定しました.しかし,このカメラは撮影した映像を
膨大なJPEGとして出力するので,連続してJPEGを表示する
アプリケーションをMFCのダイアログベースで作成しました.
しかし,ビデオデッキ等をご想像されるとわかりやすいかと
思われますが,
再生→うまくできます,つまりForループを実行すればいいのですから
停止→ボタンを押して命令を出しても,forループが忙しく無視されます.
あ,この方がわかりやすいかも.
for(i=0;i<1000;i++){
if(flag) GOTO L300;
*
}
L300:;
ボタン押したら,ループを脱出するとか.
よろしくお願いします.
for (...) {
if (GetKeyState(VK_RETURN)<0)
break;
***
}
とか。
さっそくやってみます.
レスありがとうございます
やってみましたが,おもうように動作しませんでした.
お手軽な方法としては、PeekMessageで過去ログなどを検索してみましょう。
あとはスレッド。
自己解決しました.
再生スピードも変えられるようにと
OnTimer関数を利用したら,
あっけなく解決できました.
forは処理がCPUの限界(?)ぐらいなのでしょうか.
まったくわかりませぬが,とにかくForは速いですよね.
PeekMessageに関して,ご指摘の後,検索させていただきました.
同様な目的をもった新規スレッド設立者がたくさんいて,且つ
非常に親切なレスも数多く掲載されていたので,
今後のためにも非常に参考になりそうです.
それらのスレッドをすべてこれからプリントアウトさせて
いただきます.
ご指摘いただいたdairygoods 様,中級者X 様
ありがとうございました.
> forは処理がCPUの限界(?)ぐらいなのでしょうか.
通常、WindowsのようなプリエンプティブなマルチタスクOSの管理下においては、限界というこ
とではありません。試しに無限ループにしてみてください。それでもアプリケーションの切替や
マウスカーソルの移動等はできるはずです。
> まったくわかりませぬが,とにかくForは速いですよね.
計測したことはありませんが、例えば1000回の何もしないループならマイクロ秒(あるいはそ
れ以下)の世界でしょうね。