Exemple #1
0
WCHAR MBCharToUnicode(UINT MBChar)
{
    WCHAR WideChar;
    DWORD CodePage;

    CodePage = CP_GB2312;
    MBChar &= 0xFFFF;
    if (MBChar & 0xFF00)
    {
        if (IsShiftJISChar(MBChar))
            CodePage = CP_SHIFTJIS;

        MBChar = SWAPCHAR(MBChar);
    }

    MultiByteToWideChar(
        CodePage,
        0,
        (LPSTR)&MBChar,
        2,
        (LPWSTR)&WideChar,
        sizeof(WideChar) / sizeof(WCHAR));

    return WideChar;
}
Exemple #2
0
DWORD WINAPI MyGetGlyphOutlineA(HDC hDC, UINT uChar, UINT uFormat, LPGLYPHMETRICS lpgm, DWORD cbBuffer, LPVOID lpvBuffer, CONST MAT2 *lpmat2)
{
    CHAR cHighByte;
    UINT CodePage, wChar;
    HFONT hFont = NULL;
    DWORD dwIndex;
    TEXTMETRICW tm;

    do
    {
        uChar &= 0xFFFF;
        cHighByte = HIBYTE(uChar);
        CodePage = 936;

        if (cHighByte < 0)
        {
            if (IsShiftJISChar(uChar))
            {
                MYAPI(GetTextMetricsW)(hDC, &tm);
                dwIndex = tm.tmHeight > 10;
                CodePage = 932;
//                hFont = g_hFontJP[dwIndex];
                if (hFont)
                    hFont = (HFONT)MYAPI(SelectObject)(hDC, hFont);
            }
            uChar = HIBYTE(uChar)|(LOBYTE(uChar) << 8);
        }

        MYAPI(MultiByteToWideChar)(CodePage, 0, (LPCSTR)&uChar, 2, (LPWSTR)&wChar, 1);

    } while (0);

    CodePage = MYAPI(GetGlyphOutlineW)(hDC, wChar, uFormat, lpgm, cbBuffer, lpvBuffer, lpmat2);
/*
    if (hFont)
    {
        SelectObject(hDC, hFont);
    }
*/
    return CodePage;
}
Exemple #3
0
BOOL WINAPI MyTextOutA(HDC hDC, int nXStart, int nYStart, LPCTSTR lpString, int cbCount)
{
    BOOL    r;
    WCHAR   c, ch[0x100];
    ULONG   CodePage;

    CodePage = CP_GB2312;
    if (cbCount > 2 && IsShiftJISString((PCHAR)lpString, cbCount))
    {
        CodePage = CP_SHIFTJIS;
    }
    else if (cbCount == 2)
    {
        c = *(PWCHAR)lpString;
        switch (c)
        {
            case SWAPCHAR('‘Ρ'):
                ch[0] = 0x266A;
                goto SKIP_CONV;

            default:
                if (IsShiftJISChar(SWAPCHAR(c)))
                    CodePage = CP_SHIFTJIS;
                goto NOT_CHANGE_CHAR;
        }
    }

NOT_CHANGE_CHAR:
    CodePage = MultiByteToWideChar(CodePage, 0, lpString, cbCount, ch, countof(ch));

SKIP_CONV:

    r = TextOutW(hDC, nXStart, nYStart, ch, CodePage);

    return r;
}