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,結果是錯的
DrawText(pDC->m_hDC, str, -1, CRect(0,0,200,200),DT_CENTER);
printf("\n%d",pDC->GetTextExtent(str).cx);
因為在str中加入了\n這樣,在實際輸出的時候會換行,也就是顯示成兩行,量一個帶\n的字符串的長度要怎么量呢?我用GetTextExtent,結果是錯的
解决方案 »
- win32环境 怎样在picture control中显示bitmap?
- 我的主工程调用另外个dll工程生成的dll出现的关于路径问题!
- 寻找一位语音识别技术专家做项目指导,基于c++开发
- sp5 for vc6.0的安装问题
- 请教:线程间消息通信
- ★★★麻烦大家帮个忙。 ★★★
- C语言为什么需要头文件?象basic那样不好吗?
- 数据库工程之ODBC 与 OLE DB!
- 为什么vc++写的程序要mfc42d.dll mfco42d.dll呢,有没有办法使写的程序不要这两个dll呢,需要设置什么呢
- 有关DLL的使用
- VS2005 SP1中C++的TabControl控件,如何插入页面。
- 请问:在VC6.0中为什么无法给水晶报表9设置SQL语句
先按\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就是你要的大小