int dx[8];
int fit;
SIZE the_size;
res = GetTextExtentExPointW(dc, L"WWWWWWWW", 8, -1, &fit, &dx[0], &the_size);
这有效,dx
填充了数字7 14 21等。但是当我尝试对亚洲字符(如L"薔薇薔薇薔薇薔薇"
)执行相同操作时,此功能失败。我甚至为此创建了一个字体,它没有改变任何东西。
HFONT hFont = CreateFont(14,
0,
0,
0,
FW_DONTCARE,
FALSE, //fdwItalic
FALSE, //fdwUnderline
FALSE, //fdwStrikeOut
SHIFTJIS_CHARSET,
OUT_DEFAULT_PRECIS,
CLIP_DEFAULT_PRECIS,
NONANTIALIASED_QUALITY,
VARIABLE_PITCH,
TEXT("MS PGothic"));
if (hFont == NULL) FUCK();
SelectObject(dc, hFont);
答案 0 :(得分:0)
第四个参数应该是允许的最大宽度,而不是-1
。请改用较大的值。检查以确保GetTextExtentExPointW
成功。
if(GetTextExtentExPointW(dc, L"薔薇薔薇薔薇薔薇", 8, 1000, &fit, &dx[0], &the_size))
{
...
}
请注意,Unicode代码点可能需要4个字节,或者每个代码点需要2 wchar_t
。