Console Applicationでキー入力を取得するには

[戻る]
ヒヨコ [E-Mail] [HomePage] 2005/08/16(火) 20:36:10
2年以上振りに、C++でプログラム(というかアマグラム)を書こうとしています。
Console Application (Win-XP VC++ 6.0)を用いています。

char ch;
ch = NULL;
do {
 cin >> ch;
 // do something;
} while (ch != 'x');

とすると、ENTERを押さないとキー入力となりませんが、これをMFCなどで使える
OnKeyDownのようにENTERを押さないでも認識することは可能でしょうか?

あくまでも標準C++の中で行いたいのですが・・・

宜しくご教授お願いします。

επιστημη [E-Mail] 2005/08/16(火) 21:29:07
標準C++の範囲では無理じゃないかしら。

ヒヨコ [E-Mail] [HomePage] 2005/08/16(火) 22:01:15
[[解決]]
ご無沙汰しております。
やはりそうですか・・・・
それならばそれで諦めがつきます。
ありがとうございました。

Ameria 2005/08/17(水) 09:22:21
もうみてませんか?
Vcならできるんですがね〜

RAPT 2005/08/17(水) 10:24:12
環境依存でいいなら、_kbhit() とかありますが。。
# 非標準C++ が必ずしも MFC のことを指している訳ではないと
# 分かっているなら余計な事でしょうが。

ヒヨコ [E-Mail] [HomePage] 2005/08/17(水) 18:35:32
Ameria様、RAPT様、ありがとうございます。
やはり環境非依存で、と思いました。
C++を実行できる環境がVC++しか持ち合わせ無いので、VC++を使っています。
Borland C++でも良いのですが、IDEが無いので、初心者は初歩的な文法ミスをIDEの中で
発見できないので、使いにくく思います。
ところで、一つ疑問に思ったのですが、確か以前RubyはRubyのシステム内でマルチスレ
ッドを実現していると聞きました。そして、RubyはCで全部書かれていると思います。
環境非依存で、そのようなことは可能なのでしょうか?
私にとって、タイマー割り込みも、キー割り込みも同じレベルのように思うのですが、
これは誤解でしょうか?

REE 2005/08/17(水) 18:50:46
標準C++では、マルチスレッドも割り込みも無理です。
このことは、そのRubyも環境依存のコードを含んでいることを示しています。

実際、C/C++では標準かどうかは、ソースレベルでのみ意味のあることです。
コンパイルした時点で、ターゲットCPUに対する環境に依存してしまいます。

ヒヨコ [E-Mail] [HomePage] 2005/08/17(水) 19:02:33
REE様、

早速のご返答ありがとうございました。やはりそうでしたか。
標準C++で我々が扱えるタイマー関係のものといえば、乱数発生で馴染みのある、
unsigned int now = (unsigned int)timer(NULL)
などぐらいでしたので、これでどうしてタイマー割り込みが行えるのか? と、思ってい
ました。

古いスレッドには追加発言できません。