TRichedit默认段落背景色设置方法

How to set the TRichedit default paragraph background color

我尝试使用此代码设置 TRichEdit 控件默认段落背景颜色:

//******************************************************************************
class procedure TRichEditUtility.setBGColor( aRE_ : TTNTRichEdit; bgColor_ : cardinal; default_ : boolean = FALSE );
//******************************************************************************
var
  cf: TCharFormat2;
begin
  if ( aRE_ <> NIL ) then
  begin
    fillchar(cf, sizeof(cf), 0);
    cf.cbSize := sizeof( cf );
    cf.dwMask := CFM_BACKCOLOR;
    cf.crBackColor := bgColor_;
    if ( default_ ) then
      aRE_.Perform( EM_SETCHARFORMAT, SPF_SETDEFAULT, lparam(@cf) )
    else
      aRE_.Perform( EM_SETCHARFORMAT, SCF_SELECTION, lparam(@cf) );
  end else
    raise EInvalidInputParameter.create_string( 'TRichEditUtility', 'setBGColor', 'aRE_', CONST_chars_NIL );
end;

但是SPF_SETDEFAULT常量的值是未知的!

有人能告诉我它的价值吗? (或定义其值的文件名)

以下是解决此问题以及任何此类性质的问题的方法。

  • SPF_SETDEFAULT 进行网络搜索。
  • 这会将您带到 EM_SETCHARFORMAT 的文档。
  • 该文档将 Richedit.h 列为必需的 header。
  • 在您的 Windows SDK 副本中找到 Richedit.h 并搜索 SPF_SETDEFAULT.
  • 搜索结果如下:#define SPF_SETDEFAULT 0x0004
  • 因此在 Delphi 中,您可以这样定义常量:const SPF_SETDEFAULT = [=16=]04.