Win32rich edit control有一个名为EM_FORMATRANGE
的消息,可以将控件的内容呈现到任意设备上下文。这通常用于打印或打印预览,但可以用于任何设备上下文。此消息接受名为FORMATRANGE
的结构,其定义如下:
typedef struct _formatrange {
HDC hdc;
HDC hdcTarget;
RECT rc;
RECT rcPage;
CHARRANGE chrg;
} FORMATRANGE;
rc
和rcPage
的唯一文档如下:rc
:要渲染到的区域。单位以细枝为单位。rcPage
:呈现设备上页面的整个区域。单位以细枝为单位。rc
和rcPage
的值可以通过使用GetDeviceCaps
获得。我并不完全清楚rcPage和rc之间的区别。我在网上看到的代码示例似乎将这两个设置为同一个矩形。微软自己的示例How to Print the Contents of Rich Edit Controls完全无法初始化
rcPage
,实际上将未定义的数据传递给富编辑控件。富编辑控件是否也使用了
rcPage
?我看不出为什么第二个矩形可能对影响此命令的行为有用,那么它的作用是什么?有人能举例说明rc
和rcPage
之间的区别吗? 最佳答案
链接到的示例实际上将RCPage部分设置为打印机的最大尺寸,例如文档的确切内容,而RC被设置为页面的实际可打印部分,这是不相同的,通常打印机在页面周围有一个不能物理打印的边框。之所以有两个原因,可能是因为某些东西绝对位于页面上,但您只是部分呈现其中的一部分,因此需要这些信息来正确偏移元素。