同様の質問をいくつか調べましたが、問題の解決策が見つからないようです:文字をASCIIからワイド文字(Windows UTF16)に変換してウィンドウに印刷しようとしています(目的はカスタムをキャプチャすることです)一部の中国語のサポートを含む、組み込みアプリケーション用の文字セット)
mbstowcs を使用すると、文字 0x70 と 0x8F (含まれている) の間の 2 行を除いて、必要なものが得られます。これは、マルチバイト文字の最初の値に対応する必要があると思われます。
mbstowcs を使用すると、char s[5] が UTF-8 として解釈され、一部の値が最初の文字として認識されません。プロジェクト全体を変更せずに、プレーン ASCII として解釈されるように強制しますか?
MultiByteToWideChar(CP_ACP, 0, s, -1, ws, 0); も試しました。しかし、その後、どこでも同じ漢字が常に表示されるため、あまり役に立ちません...
これはテストコードであることに注意してください。
char s[5] = {0, 0, 0}; // I should really need only [2]
WCHAR ws[5];
SetTextAlign(hdc,TA_CENTER | TA_BASELINE);
for (int y = 0; y < 16 * 64; y += 64)
{
for (int x = 0; x < 16 * 64; x += 64)
{
mbstowcs(ws, s, 1);
// Missing two lines of characters in the middle
TextOutW (hdc, x+32, y+32, ws, 1);
// TextOutA (hdc, x+32, y+32, s, 1);
// Works fine but I need to handle multibyte characters
s[0]++;
}
}