如何通过鼠标点击获取RichEdit控件的背景颜色?
获取RichEdit控件背景色的方法
要获取RichEdit控件的背景色,你可以通过发送EM_GETCHARFORMAT消息实现,这和设置背景色时用到的EM_SETCHARFORMAT消息是配套的。以下是对应的Delphi实现代码:
function TBReaderF.GetBGColor(RichEdit: TRichEdit): TColor; var Format: CHARFORMAT2; begin FillChar(Format, SizeOf(Format), 0); Format.cbSize := SizeOf(Format); Format.dwMask := CFM_BACKCOLOR; // 发送消息获取格式信息 RichEdit.Perform(EM_GETCHARFORMAT, SCF_SELECTION, Longint(@Format)); Result := Format.crBackColor; end;
代码说明:
- 先初始化
CHARFORMAT2结构,设置cbSize为结构本身的大小,这是使用该结构的必要前提 dwMask指定要获取的格式属性,这里设为CFM_BACKCOLOR,表示只提取背景色相关信息- 参数
SCF_SELECTION表示获取当前选中区域的背景色;如果需要获取整个文档的默认背景色,可替换为SCF_ALL - 最终返回的
Format.crBackColor就是目标背景色
注意:如果RichEdit内不同区域背景色不同,
SCF_SELECTION会返回当前选中区域的颜色;若未选中任何内容,通常会返回光标所在位置的格式颜色。
内容的提问来源于stack exchange,提问作者Peter
相关产品推荐
相关产品推荐

