CRichEditCtrl::FormatRange 是 MFC(Microsoft Foundation Classes)中的 CRichEditCtrl 类的一个公共方法,用于将文本的一部分应用格式。该方法的原型如下:
int FormatRange(
    BOOL bRender,
    FORMATRANGE* pfr
);

  •  bRender:TRUE 表示绘制,FALSE 表示格式化但不绘制。

  •  pfr:指向 FORMATRANGE 结构的指针,该结构定义了格式化的范围和其他信息。


FORMATRANGE 结构的定义如下:
typedef struct _formatrange {
    HDC hdc;            // 设备上下文
    HDC hdcTarget;      // 目标设备上下文
    RECT rc;            // 绘制或格式化的范围
    RECT rcPage;        // 页面的范围
    CHARRANGE chrg;     // 范围的字符索引
} FORMATRANGE;

FormatRange 方法用于在指定范围内应用格式,并可以选择是否将结果绘制到设备上下文。这对于实现打印功能或在内存中进行格式化而不显示在屏幕上的情况非常有用。

以下是一个简单的示例,演示如何使用 FormatRange 方法:
// 假设 pRichEdit 是你的 CRichEditCtrl 对象指针

// 准备 FORMATRANGE 结构
FORMATRANGE fr;
fr.hdc = ::GetDC(m_hWnd); // 获取设备上下文
fr.hdcTarget = fr.hdc;    // 使用相同的设备上下文
fr.rc.left = 100;         // 格式化范围的左边界
fr.rc.top = 100;          // 格式化范围的上边界
fr.rc.right = 500;        // 格式化范围的右边界
fr.rc.bottom = 500;       // 格式化范围的下边界
fr.rcPage = fr.rc;        // 页面的范围与格式化范围相同
fr.chrg.cpMin = 0;        // 范围的起始字符索引
fr.chrg.cpMax = -1;       // 范围的结束字符索引,-1 表示到文本的末尾

// 调用 FormatRange 方法
int nPrinted = pRichEdit->FormatRange(TRUE, &fr);

// 释放设备上下文
::ReleaseDC(m_hWnd, fr.hdc);

在这个示例中,FormatRange 方法将在指定的范围内应用格式,并将结果绘制到设备上下文。请注意,使用 FormatRange 之后,通常需要调用 FormatRange 方法的配套方法 pRichEdit->FormatRange(FALSE, nullptr); 来结束格式化操作,以确保释放相关资源。


转载请注明出处:http://www.pingtaimeng.com/article/detail/22207/MFC/CRichEditCtrl