如何在Excel中很好地打印我的C ++ ActiveX控件?

时间:2009-03-05 14:45:44

标签: c++ excel printing activex

我正在尝试让我的ActiveX控件在Excel中打印出来。

控件是用C ++编写的。最初我使用Visual Studio 2005向导生成控件。我用一个简单的向导生成控件测试了这个,以试验OnDraw函数,我发现即使是一个直接从向导中控制也不能很好地打印。它似乎会截取控件的很大一部分 - 默认情况下会在中心呈现黑色轮廓和一些文本。

在我的ActiveX控件上调用函数IDataObject_GetData,然后创建一个元文件并呈现给它。

有谁知道如何让ActiveX控件很好地打印出来?或者,我们将非常感谢有用信息的链接。

1 个答案:

答案 0 :(得分:2)

经过多次努力,我找到了解决问题的方法。

Visual Studio 2005向导生成的OnDraw函数通过调用函数SelectClipRgn来设置剪切区域。正是这种裁剪设置导致ActiveX控件在打印时出现剪裁。注释掉代码会使ActiveX控件完美打印出来。注释掉代码似乎也没有引起任何其他问题 - 至少在我的情况下不是这样。

我只能假设用于裁剪的任何坐标系与绘制到图元文件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