ページ 11

DOSプログラムについて

Posted: 2008年12月04日(木) 17:32
by 天使
DOSでキー情報を取得する方法について教えていただきたいです。
WindowsAPIなどでしたらVK_で書けると思うのですがDOSだとわかりません。
現在は

int EscCheck(void)
{
scanf("%d",&Key);

if(Key == 1){
return 0;
}else{
return -1;
}
}
と書いています。
このようではなくif文で直接、Escキーが押されたらや1が押されたらと書きたいです。

またDOS上で警告などの文字を一部赤字にしたいのですができるのでしょうか?
APIではフォントセットみたいなのがあってサイズも指定できたのでできるのでしたら教えていただきたいです。

Re:DOSプログラムについて

Posted: 2008年12月04日(木) 17:49
by non
ESCキー情報を取得するってのは、私が質問の意味を理解出来てないのかもしれないけど、
int main(void)
{
	int ch;
	while((ch=getche())!=0x1b);
	return 0;
}

MS-DOSなら エスケープシーケンスで
printf("\033[31m");
とすると赤だったかな。DOS窓では使えないけど。

Re:DOSプログラムについて

Posted: 2008年12月04日(木) 17:54
by バグ
WINDOWS上でのコマンドプロンプト(コンソールアプリ)ではなく、MS-DOSなんでしょうか?
コンソールアプリであれば、APIを使用すれば文字の色の変更ができます。キー入力はgetchar関数の戻り値で判定してはいかがでしょうか?
MS-DOSの仕様は分かりませんが、APIを使用したコンソールアプリではファンクションキーや特殊キーは2回に分かれて情報が飛んできますので、getchar関数を2度実行する必要があります。

Re:DOSプログラムについて

Posted: 2008年12月04日(木) 18:54
by lbfuvab
getchですね。
参照:http://msdn.microsoft.com/ja-jp/library/078sfkak.aspx

色を変えるのは
http://www.kumei.ne.jp/c_lang/intro/no_58.htm
を参照してください。

Re:DOSプログラムについて

Posted: 2008年12月05日(金) 09:28
by バグ
失礼しました。確かに、_getch関数でした。