Forループ内に影響を与える方法 – プログラミング – Home

Forループ内に影響を与える方法
 
通知
すべてクリア

[解決済] Forループ内に影響を与える方法


merlo
 merlo
(@merlo)
ゲスト
結合: 23年前
投稿: 85
Topic starter  

質問したいことをうまく表現できませんが,よろしくお願いします.

例えば,ある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:;

ボタン押したら,ループを脱出するとか.

よろしくお願いします.


引用未解決
トピックタグ
dairygoods
 dairygoods
(@dairygoods)
ゲスト
結合: 23年前
投稿: 1421
 

for (...) {
if (GetKeyState(VK_RETURN)<0)
break;
***
}
とか。


返信引用
merlo
 merlo
(@merlo)
ゲスト
結合: 23年前
投稿: 85
Topic starter  

さっそくやってみます.
レスありがとうございます


返信引用
merlo
 merlo
(@merlo)
ゲスト
結合: 23年前
投稿: 85
Topic starter  

やってみましたが,おもうように動作しませんでした.


返信引用
中級者X
 中級者X
(@中級者X)
ゲスト
結合: 23年前
投稿: 26
 

お手軽な方法としては、PeekMessageで過去ログなどを検索してみましょう。
あとはスレッド。


返信引用
merlo
 merlo
(@merlo)
ゲスト
結合: 23年前
投稿: 85
Topic starter  

自己解決しました.
再生スピードも変えられるようにと
OnTimer関数を利用したら,
あっけなく解決できました.

forは処理がCPUの限界(?)ぐらいなのでしょうか.
まったくわかりませぬが,とにかくForは速いですよね.

PeekMessageに関して,ご指摘の後,検索させていただきました.
同様な目的をもった新規スレッド設立者がたくさんいて,且つ
非常に親切なレスも数多く掲載されていたので,
今後のためにも非常に参考になりそうです.

それらのスレッドをすべてこれからプリントアウトさせて
いただきます.

ご指摘いただいたdairygoods 様,中級者X 様
ありがとうございました.


返信引用
駄犬
 駄犬
(@駄犬)
ゲスト
結合: 23年前
投稿: 59
 

> forは処理がCPUの限界(?)ぐらいなのでしょうか.
通常、WindowsのようなプリエンプティブなマルチタスクOSの管理下においては、限界というこ
とではありません。試しに無限ループにしてみてください。それでもアプリケーションの切替や
マウスカーソルの移動等はできるはずです。

> まったくわかりませぬが,とにかくForは速いですよね.
計測したことはありませんが、例えば1000回の何もしないループならマイクロ秒(あるいはそ
れ以下)の世界でしょうね。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました