782 :
デフォルトの名無しさん:
VisualC++6のgetchって、日本語入力対応してないみたいなんですけど、
入力させる方法ってありますか?
コンソールから"あ"を入力させようとすると、
"@a"になってしまいます。
@はALT+漢字
aはあと入力した時。
(打鍵したキーの文字がそのまま入る)
とりあえず何を言っているのかよくわからない。
getchって元々日本語云々で使用する関数では無いぞ
784 :
783:2001/06/11(月) 04:32
>>784 要はコンソールからバッファリングをせずに入力させたいんです。
例えば、getc使うと行単位になってしまうでしょ?
(tab打鍵で入力文字補完とかさせたいんで。)
785 :
783:2001/06/11(月) 04:43
ちなみにDOSコンパイラでやるとなんの問題もありません。
786 :
783:2001/06/11(月) 04:51
テスト用のソース載せます。
#include <stdio.h>
#include <conio.h>
int main() {
int c;
while ((c = getch()) != 0x1b) {
printf("%x", c);
putch(c);
}
return 0;
}
787 :
782:2001/06/11(月) 04:54
まちがえた・・。
わたしは783じゃなくて782です
>>782 DOS と Windows の PC側からのFEPのとらえ方の差です。
789 :
782:2001/06/11(月) 05:23
>>788 ですので、コンソールからバッファリングをせずに、
漢字入力させる方法がわかればいいんですが。
getchって、キーが押されてないときは
「押されてない」って値ですぐに返って
きたんじゃなかったかな。
786のコードだと、そういういらない値まで…
というところから、788氏の言うことに続く。
791 :
782:2001/06/11(月) 06:14
>>790 べつにgetchにこだわっているわけではありません。
同様の動作が行なえれば良いので。
(789は、その辺を含ませた発言だったのですが)
786のコードはWin2000 + Atok14で、漢字入れてもきちんと動いたぞ。
VCじゃなくて、Win9Xが腐ってるんじゃねーのか?
793 :
792:2001/06/11(月) 06:43
794 :
デフォルトの名無しさん:2001/06/11(月) 07:57
>>793 #include <stdio.h>
#include <conio.h>
#define ismbblead(a) (0x81<=a&&a<= 0x9F)||(0xE0<=a&&a<=0xFC)
int main() {
char c[3];
c[3]='\0';
while ((c[0] = getch()) != 0x1b) {
if(!ismbblead(c[0])
{
printf("%x", c[0]);
putch(c[0]);
}
else
{
c[1] = getch();
printf("%x%x", c[0],c[1]);
puts(c);
}
return 0;
}
じゃあ、納得いかないってこと?