RichEdit控件中的字符间距

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了RichEdit控件中的字符间距相关的知识,希望对你有一定的参考价值。

如何在RichEdit控件中更改字符间距?

我曾尝试使用CHARFORMAT结构,但正如MSDN所说,sSpacing在RichEdit控件中没用。而且,SetTextExtra函数在该控件的hdc中也是无用的。

而且我也尝试使用该控件的ole接口,ITextFont接口的SetSpace功能,效果不佳。

有人能帮助我吗?

谢谢!

答案

如果你的意思是单个字符之间的字符间距,我不确定你能做什么。如果您正在讨论行之间的间距,请使用PARAFORMAT结构和EM_SETPARAFORMAT消息。

另一答案

绝对适用于Windows 10中的RichEdit v8.5。

确保您使用的是Windows类"RICHEDIT50W"(来自MsftEdit.dll)而不是"RichEdit20W"类(来自Riched32.dll):

//Get the ITextDocument interface of the RichEdit control
IUnknown re;
if (SendMessage(RichEdit1.Handle, EM_GetOleInterface, 0, ref (LPARAM)re) == 0)
   throw new Exception("Could not get ITextDocument from RichEdit");
ITextDocument doc = re as ITextDocument;

//Increase spacing (positive is expanded)
Single spacing = doc.Selection.Font.Spacing;
spacing += 1;
doc.Selection.Font.Spacing = spacing;

//Decrease spacing (negative is compressed)
spacing = doc.Selection.Font.Spacing;
spacing -= 1;
doc.Selection.Font.Spacing = spacing;

//Reset to normal spacing
doc.Selection.Font.Spacing = 0;

enter image description here

以上是关于RichEdit控件中的字符间距的主要内容,如果未能解决你的问题,请参考以下文章

Delphi7中的Richedit控件怎么找不到

语法高亮 Richedit 控件无法正常工作

如何正确处理来自 MSFTEDIT_CLASS (RichEdit) 控件的 Windows 消息?

将光标定位在 RichEdit 控件中文本的末尾

如何在 RichEdit 2.0 中自动检测 url?

RichEdit 控件在切换选项卡时不显示水平滚动条