ExtTextOutW () с ETO_IGNORELANGUAGE не удалось записать запись - PullRequest
0 голосов
/ 26 ноября 2011

Я работаю над образцом, в котором я создаю файл EMF с текстом.Чтобы добавить текст, я использую API ExtTextOutW () с опцией ETO_IGNORELANGUAGE.

Возвращаемое значение этого API - TRUE.Но когда я открываю файл EMF, текст отсутствует.Затем я увидел записи.Для ExtTextOutW нет энтеи.

Bellw - это код.

HDC hDC = GetDC(hWnd);

RECT Rect = {0, 0, 21590, 27940};

//Create the EMF file DC
HDC hEMFDC  = ::CreateEnhMetaFile(hDC, L"c:\\del\\1.emf", &Rect, L"Test");
if (NULL != hEMFDC)
{
    RECT Rect = {0, 0, 300, 155};
    HBRUSH hb = CreateSolidBrush(0X00FFFF00);

    FillRect(hEMFDC, &Rect, hb);
    DeleteObject(hb);

    int dx[12] = {25,25,25,25,25,25, 25,25,25,25,25,25};                    
    WCHAR wcsBuffer[] = L"Text Message";

    ExtTextOutW(hEMFDC, 10, 10, ETO_IGNORELANGUAGE, NULL, wcsBuffer, wcslen(wcsBuffer), dx);

    HENHMETAFILE hmf = CloseEnhMetaFile(hEMFDC); 
    DeleteEnhMetaFile(hmf);
    hEMFDC = NULL;
}

ReleaseDC(hWnd, hDC);

Пожалуйста, дайте мне знать, что я делаю неправильно в приведенном выше коде.

1 Ответ

2 голосов
/ 30 ноября 2011

Читали ли вы документацию для ExtTextOut[W] ( MSDN ), особенно для таких флагов, как ETO_IGNORELANGUAGE :

Зарезервировано для системного использования. Если приложение устанавливает этот флаг, оно теряет поддержка международных сценариев и в некоторых случаях может не отображать текст вообще.

Просто попробуйте без этого флага.

...