文档【这里】说明,如果我们使用
现在的问题是矩形的宽度应该是固定的。因此,我只想要矩形
DT_CALCRECT
标志,则会执行以下操作:
从描述中可以清楚地看出,确定矩形的宽度和高度。如果有多行文本,DrawText将使用pRect参数指向的矩形的宽度,并扩展矩形的底部以限定最后一行文本。如果只有一行文本,DrawText会修改矩形的右侧,使其限定行中的最后一个字符。在任何情况下,DrawText返回格式化文本的高度,但不绘制文本。
DT_CALCRECT
将使DrawText
不绘制内容,因此我应该做一些像…的事情。DrawTextExA(hdc, fromsqlite->descrip, -1, &rect, DT_CALCRECT, NULL);
// On debugging, I can see that rect is being modified in the above step.
if (DrawTextExA(hdc, fromsqlite->descrip, -1, &rect,
DT_LEFT | DT_EDITCONTROL | DT_WORDBREAK, NULL) == 0) {
MessageBox(NULL, L"DrawText failed", NULL, MB_OK);
}
现在的问题是矩形的宽度应该是固定的。因此,我只想要矩形
rect
的底部扩展。在我的情况下,从sqlite
数据库检索到的fromsqlite->descrip
总是被视为单行
文本。任何帮助都将不胜感激。
DrawTextA
是有意的,因为我严格处理 ANSI 输入。 - sjsamDT_EDITCONTROL
。正如这个答案正确显示的那样,你必须在第一次调用DrawText
和第二次调用DrawText
中使用相同的标志,否则计算得出的矩形将是不正确的。 - zett42DT_EDITCONTROL
,文本也可以溢出矩形的右侧。请参考更新后的答案。 - Barmak ShemiranircText = rc
,然后更改rc
的高度。 - Barmak Shemirani