我正在尝试创建一个方法,以字母为单位给出字符串的宽度。 到目前为止我的代码:
inline void getTextWidth(HWND hwnd char* text) {
SIZE textSize;
GetTextExtentPoint32(GetDC(hwnd), text, strlen(text), &textSize);
return ?;
}
我知道我应该使用LPtoDP
(MSDN),但希望点作为参数,而不是GetTextExtentPoint32返回的SIZE。
如何转换此内容?
答案 0 :(得分:3)
SIZE
结构包含高度和宽度。由于您只关心宽度,因此您显然需要LPtoDP(textSize.cx);
。
答案 1 :(得分:0)
我用另一种方法解决了它。对于所有感兴趣的人,这是我的解决方案:
int getStringWidth(char *text, HFONT font) {
HDC dc = GetDC(NULL);
SelectObject(dc, font);
RECT rect = { 0, 0, 0, 0 };
DrawText(dc, text, strlen(text), &rect, DT_CALCRECT | DT_NOPREFIX | DT_SINGLELINE);
int textWidth = abs(rect.right - rect.left);
DeleteDC(dc);
return textWidth;
}