嗨,我想知道文本适合
RECT
所需的宽度值。
所以现在我正在尝试根据
RECT
获取 LPCWSTR
尺寸,使用 DT_CALCRECT
的 DrawText()
格式。
DT_CALCRECT
确定矩形的宽度和高度。 [...] DrawText 返回格式化文本的高度[...]
以下代码
LPCWSTR textCheck = L"12345";
RECT rectCheck = { 0, 0, 0, 0 };
int check = DrawText(
hdc,
textCheck,
-1,
&rectCheck,
DT_CALCRECT);
返回相同的值 (16),
textCheck
为“12345”和“123456789”。
它只能返回高度还是我遗漏了一些东西?
DT_CALCRECT
是否可以确定自己的宽度但无法返回它?
我期望
DT_CALCRECT
能够返回宽度和高度。
除非我误解了什么,如果您只想要渲染字符串(在单行上)所需的宽度,请将 DT_CALCRECT 与 DT_SINGLELINE 组合,然后检查
rectCheck
,它是一个输出参数。
LPCWSTR textCheck = L"12345";
RECT rectCheck = { 0, 0, 0, 0 };
int check = DrawText(
hdc,
textCheck ,
-1,
&rectCheck ,
DT_CALCRECT|DT_SINGLELINE);
int requiredWidth = rectCheck.right-rechCheck.left;
使用 GetTextExtentPoint32 返回格式化文本的元组(宽度,矩形)
例如Python中的这段代码:
wText, hText = win32gui.GetTextExtentPoint32(handleDC,strText)