はじめまして。phobosです。よろしくお願いします。
早速なんですが、リアルタイムに文章入力の出来るプログラムを作っていて、
kbhitとgetchを使う方法を取っていたのですが、日本語をリアルタイム入力できるようにする
必要が出来てしまいました。
ですが、getchは日本語に対応しないということで、詰まってしまっています。
ですので、日本語をリアルタイム入力できる手法をご教授いただきたいです。
よろしくお願いします。
日本語のリアルタイム入力
Re: 日本語のリアルタイム入力
「日本語のリアルタイム入力」が示す仕様が曖昧ですね。
1) キートップにある文字を全角でも入力できるだけで良い
2) 漢字変換も必要(リアルタイムで無くなる気がしますが)
さて。
1) キートップにある文字を全角でも入力できるだけで良い
2) 漢字変換も必要(リアルタイムで無くなる気がしますが)
さて。
Re: 日本語のリアルタイム入力
#include <stdio.h>
#include <conio.h>
int main(void)
{
int key1,key2;
char str[3]={'\0'};
printf("Push any key\n");
while(1){
if(kbhit()){
str[0]=key1 = getch();
if(0x80<=key1 && key1<=0x9F || 0xE0<=key1 && key1<=0xFF){
str[1]=key2 = getch();
printf("%s",str);
}
else{
putchar(key1);
if(key1==0x0D){
putchar('\n');
break;
}
}
}
}
return 0;
}
non
Re: 日本語のリアルタイム入力
マルチバイト文字もgetch()して文字型配列に追加していくだけで問題ないですよね。
そのままputcharすれば表示もできますし。
IMEで確定するまでがリアルタイムにならないという問題なのであれば、リアルタイムに取得したキー入力に対応してプログラム内部でよみがな文字列を作ってImmGetConversionList APIに渡して漢字変換したものを表示するというふうにすれば良いと思います。
そのままputcharすれば表示もできますし。
IMEで確定するまでがリアルタイムにならないという問題なのであれば、リアルタイムに取得したキー入力に対応してプログラム内部でよみがな文字列を作ってImmGetConversionList APIに渡して漢字変換したものを表示するというふうにすれば良いと思います。