|
|
我用DrawText显示文字,并约定每行只显示20个中文字符。如此就需要得到20个中文字符所占的象素宽度。我用了以下两种方法,但均不够理想。
(1)用TEXTMETRIC
TEXTMETRIC tm ;
int width=tm.tmAveCharWidth*40; //20个中文字符为40个西文字符宽
(2)用GetTextExtentPoint32()
char cc[255];
::memset(cc,97,255); //cc为一串"a"
SIZE size;
::GetTextExtentPoint32(dc,cc,40,&size);
int width=size.cx;
方法一可能因为 tm.tmAveCharWidth不包括字符间距,运行的效果是显示字数每行不足20字。
方法二看似很合理,但运行结果是字数每行多于20字。
请问各位大虾,还有什么更好的方法?请赐教! |
|