1

Win32 Rich Edit 控件有一个名为的消息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 之间的区别是什么。我在网上看到的代码示例似乎将这两个设置为同一个矩形。Microsoft 自己的示例How to Print the Contents of Rich Edit Controls完全无法初始化rcPage,实际上将未定义的数据传递给 Rich Edit 控件。

甚至被rcPage富编辑控件使用?我不明白为什么第二个矩形可能对影响这个命令的行为有用,那么它有什么用呢?rc有人可以提供一个例子来说明和之间的区别rcPage吗?

4

1 回答 1

0

您链接到的示例实际上将 rcPage 部分设置为打印机的最大尺寸,例如文档所说的内容,而 rc 设置为页面的实际可打印部分,通常打印机有页面周围无法实际打印的边框。有两个的原因可能是当某些东西绝对定位在页面上但您只是部分渲染它的一部分时,它需要该信息来正确偏移元素。

于 2012-10-23T03:43:22.430 回答