带有ETO_IGNORELANGUAGE的ExtTextOutW()无法捕获记录

时间:2011-11-26 12:53:43

标签: windows winapi visual-c++ mfc .emf

我正在研究一个示例,我正在创建一个包含一些文本的EMF文件。 要添加文本,我使用带有ETO_IGNORELANGUAGE选项的API ExtTextOutW()。

此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 个答案:

答案 0 :(得分:2)

您是否阅读了ExtTextOut[W]MSDN)的文档,尤其是 ETO_IGNORELANGUAGE 等标记的部分:

  

保留供系统使用。如果应用程序设置此标志,则会丢失   国际脚本支持,在某些情况下,它可能显示没有   文字。

试试没有这个标志。