VisualC++相談室 2

このエントリーをはてなブックマークに追加
782デフォルトの名無しさん
VisualC++6のgetchって、日本語入力対応してないみたいなんですけど、
入力させる方法ってありますか?
コンソールから"あ"を入力させようとすると、
"@a"になってしまいます。
@はALT+漢字
aはあと入力した時。
(打鍵したキーの文字がそのまま入る)
783デフォルトの名無しさん:2001/06/11(月) 04:26
とりあえず何を言っているのかよくわからない。
getchって元々日本語云々で使用する関数では無いぞ
784783:2001/06/11(月) 04:32
>>784
要はコンソールからバッファリングをせずに入力させたいんです。
例えば、getc使うと行単位になってしまうでしょ?
(tab打鍵で入力文字補完とかさせたいんで。)
785783:2001/06/11(月) 04:43
ちなみにDOSコンパイラでやるとなんの問題もありません。
786783: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;
}
787782:2001/06/11(月) 04:54
まちがえた・・。
わたしは783じゃなくて782です
788デフォルトの名無しさん:2001/06/11(月) 05:17
>>782
DOS と Windows の PC側からのFEPのとらえ方の差です。
789782:2001/06/11(月) 05:23
>>788
ですので、コンソールからバッファリングをせずに、
漢字入力させる方法がわかればいいんですが。
790デフォルトの名無しさん:2001/06/11(月) 06:03
getchって、キーが押されてないときは
「押されてない」って値ですぐに返って
きたんじゃなかったかな。
786のコードだと、そういういらない値まで…

というところから、788氏の言うことに続く。
791782:2001/06/11(月) 06:14
>>790
べつにgetchにこだわっているわけではありません。
同様の動作が行なえれば良いので。
(789は、その辺を含ませた発言だったのですが)
792デフォルトの名無しさん:2001/06/11(月) 06:38
786のコードはWin2000 + Atok14で、漢字入れてもきちんと動いたぞ。
VCじゃなくて、Win9Xが腐ってるんじゃねーのか?
793792:2001/06/11(月) 06:43
>>792
その様です。
どうすればいいんでしょう。

これも関係ありそうです。
http://www.microsoft.com/japan/support/kb/articles/J024/2/11.htm
(この説明、良く分からないんですが・・・。)
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;
}

じゃあ、納得いかないってこと?
795デフォルトの名無しさん:2001/06/11(月) 09:03
>>793
日本語がおかしいと思ったときは、英語を確認しましょう。
http://support.microsoft.com/support/kb/articles/Q146/4/48.asp
>are unable to receive DBCS characters composed by IMEs.
>DBCS 文字を受け取ることができます。
おいおい‥‥どこのヴァカか訳しやがったんだ?
要するに、Win9Xでは仮名漢が16bitだからどうしょうもない、って事。
>This behavior is by design
で、それは仕様とか言い張るし。