【发布时间】:2018-04-14 13:29:19
【问题描述】:
[ here ] 的文档说如果我们使用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 始终被视为single-line 文本。
感谢任何帮助。
【问题讨论】: