我正在尝试让我的ActiveX控件在Excel中打印出来。
控件是用C ++编写的。最初我使用Visual Studio 2005向导生成控件。我用一个简单的向导生成控件测试了这个,以试验OnDraw函数,我发现即使是一个直接从向导中控制也不能很好地打印。它似乎会截取控件的很大一部分 - 默认情况下会在中心呈现黑色轮廓和一些文本。
在我的ActiveX控件上调用函数IDataObject_GetData,然后创建一个元文件并呈现给它。
有谁知道如何让ActiveX控件很好地打印出来?或者,我们将非常感谢有用信息的链接。
答案 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