0

同様の質問をいくつか調べましたが、問題の解決策が見つからないようです:文字を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]++;
            }
        }
4

0 に答える 0