如何使我的C ++ ActiveX控件在Excel中很好地打印?
我想让我的ActiveX控件在Excel中很好地打印出来。
该控件是用C ++编写的。 最初我使用Visual Studio 2005向导生成控件。 我已经用一个简单的向导生成的控件testing了这一点,以试验OnDraw函数,并且我发现即使直接从向导控制也不能很好地打印。 它似乎剪切了大部分的控制 – 默认情况下,在中心呈现黑色的轮廓和一些文字。
在我的ActiveX控件上调用函数IDataObject_GetData,然后创build一个图元文件并呈现给它。
有谁知道如何获得一个ActiveX控件打印出很好? 另外,链接到有用的信息将不胜感激。
经过多次的搔抓,我想出了解决scheme,我的问题。
由Visual Studio 2005向导生成的OnDraw
函数通过调用函数SelectClipRgn
设置一个裁剪区域。 正是这个剪辑设置导致ActiveX控件在打印时出现剪切。 将代码注释掉会使ActiveX控件完美地打印出来。 注释掉代码似乎也不会导致任何其他问题 – 至less不是在我的情况。
我只能假设无论使用什么坐标系来剪裁,都不能与绘制元文件DC时使用的坐标系统兼容。
以下是一些有关打印ActiveX控件的有用信息的链接:
http://www.codeproject.com/KB/COM/officeatlprint.aspx
http://www.codeproject.com/KB/COM/WirgerPrintArticle.aspx