MFC Grid control 是个很好的东东,在进行数据库程序开发的过程中,提供了很大的方便。上周六在实现显示内容打印的时候出现了一点问题,那就是打印的标题字段显示不全,虽然在程序中是全部显示的,也设置了EnableWysiwygPrinting,可每次都是一部分内容显示为“...”
m_GridStoreSelect.EnableWysiwygPrinting();
仔细查看Demo,发现它的打印时没有问题的,能正确显示(都是只调用了grid控件的print()),why?我的程序中为了美观,将标题行字体进行了修改,难道是这个原因么?将设置字体的内容屏蔽,结果还是如此!
最后单步调试进入GridControl的打印部分代码,经过仔细排查,最后锁定CGridCellBase::PrintCell()函数,所有的Cell打印时都是通过它来实现。其中在对固定Cell进行划线操作后,会将cell的rect缩小了1(729行),然后接着又缩小了4(733行):
729 rect.DeflateRect(1,1);
730 pDC->SelectObject(pOldPen);
731 }
732
733 rect.DeflateRect(GetMargin(), 0);
这样一来Rect空间就放不下原来的Text,只好显示为...了。
为了解决这个问题,需要调整缩小的大小就可以了:
rect.DeflateRect(GetMargin()/2, 0);