如何使我的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

http://support.microsoft.com/kb/81497

http://support.microsoft.com/kb/84984