量帶換行符的字符串顯示在設備的長度

xijiaohuangcao 2008-12-18 12:08:40
CString str = _T("hello\n lily");
DrawText(pDC->m_hDC, str, -1, CRect(0,0,200,200),DT_CENTER);
printf("\n%d",pDC->GetTextExtent(str).cy);
因為在str中加入了\n這樣,在實際輸出的時候會換行,也就是顯示成兩行,那么寬度應該是兩行文本的寬度,但是打印出的寬度只有一行文本的寬度,我想知道要怎么樣才能得到正確的寬度?使用哪個函數?我試了把GetTextExtent改成GetTabbedTextExtent,但是編譯報錯,說CDC沒這個方法。請問有人能幫幫我么?
...全文
71 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
qqlpp 2008-12-18
  • 打赏
  • 举报
回复
不懂,帮顶
一条晚起的虫 2008-12-18
  • 打赏
  • 举报
回复
//lz指的是文本高度吧?
CString str = _T("hello\n lily");
CDC *pDC = GetDlgItem(IDC_PICTURE)->GetDC();
int n = DrawText(pDC->GetSafeHdc(), str, -1, CRect(0,0,200,200),DT_CENTER);
//DrawText的返回值就是文本输出的高度。
TRACE("%d", n);
xijiaohuangcao 2008-12-18
  • 打赏
  • 举报
回复
不好意思,再問下量一個帶\n的字符串的長度要怎么量呢?我用GetTextExtent,結果是錯的

19,464

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧