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).cx); 
因為在str中加入了\n這樣,在實際輸出的時候會換行,也就是顯示成兩行,量一個帶\n的字符串的長度要怎么量呢?我用GetTextExtent,結果是錯的

解决方案 »

  1.   

    应该是:_T("hello\r\n lily"); 
      

  2.   

    这么老的贴我来回吧
    先按\n字符来分隔你的str,函数如下:
    int SplitString(string s, char cs, vector<string>& sa)
    {
    sa.clear();
    if (s.length() == 0)  return 0; string stall = s;  stall += cs;  
    string st; for (size_t i = 0; i < stall.length(); i++)
    {
    char ch = stall[i];
    if (ch == cs)
    {
    sa.push_back(st);
    st = "";
    continue;
    }
    st += ch;
    } return (int)sa.size();
    } 实现代码如下:
    string text = "hello\n lily";
    CSize size = CSize(0,0);
    vector<string> sa;
    SplitString(text, '\n', sa);
    for(int i = 0; i < (int)sa.size(); i++)
    {
    CSize tempsize = pDC->GetTextExtent(sa[i].c_str(), sa[i].length());
    if(size.cx < tempsize.cx)
    size.cx = tempsize.cx;
    size.cy = size.cy + tempsize.cy;
    }size就是你要的大小