想在视图中用DrawText输出一个距阵。
大致代码如下:
for(int i=0; i<matrix2.GetSize(); i++)
{
long width=0;
for(int j=0; j<matrix2[i].GetSize(); j++)
{
rect.left=width;
rect.top=i*text_height;
rect.right=width + (matrix2[i][j].GetLength())*text_width;
rect.bottom=(i+1)*text_height;
dc.DrawText(matrix2[i][j],&rect, DT_LEFT );
width = rect.right;
}
}
的确,矩阵输出到视图中了。但是元素之间的空格不是相同的,有些元素之间的空格很大。
如何纠正这个问题了。
3X。

解决方案 »

  1.   

    这个不好调整的,因为元素的长度不同,和在DOS里面打印一样的,比较难控制
      

  2.   

    这一段
    for(int j=0; j <matrix2[i].GetSize(); j++) 

    rect.left=width; 
    rect.top=i*text_height; 
    rect.right=width + (matrix2[i][j].GetLength())*text_width; 
    rect.bottom=(i+1)*text_height; 
    dc.DrawText(matrix2[i][j],&rect, DT_LEFT ); 
    width = rect.right; 
    } 应该改为:
    for(int j=0; j<txtmatrix[i].GetSize(); j++)
    {
    rect.left=width;
    rect.top=i*text_height;
    CSize size=dc.GetTextExtent(txtmatrix[i][j]);
    rect.right=width + size.cx;
    rect.bottom=(i+1)*text_height;
    dc.DrawText(txtmatrix[i][j], &rect, DT_LEFT );
    size=dc.GetTextExtent(_T("     "));
    width = rect.right+size.cx;
    }