通过发送消息的机制来设置富文本框中字体颜色与大小样式

爱学习的小栗子 2020-08-12 03:02:33
SendMessage(H, EM_SETCHARFORMAT, ?,?);

或者

SendMessage(H, WM_SETFONT, ?,?);
...全文
361 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
引用 4 楼 tanqth 的回复:
源码已给出来 ,当系统接收到WMSetFont,只会执行FDefAttributes.Assign(Font); SendMessage里的任何信息都没意义。当然,你可以先修改源码。
WMSetFont源码肯定是不能修改的 我自己做了一个测试,往写字板中添加文字,用spy++获取写字板权限,然后用EM_SETCHARFORMAT发送消息,但是这个消息会使写字板崩掉。。。 您有用过这个EM_SETCHARFORMAT消息么?网上说这个可以,但是我不知道具体该怎么用
tanqth 2020-08-13
  • 打赏
  • 举报
回复
源码已给出来 ,当系统接收到WMSetFont,只会执行FDefAttributes.Assign(Font); SendMessage里的任何信息都没意义。当然,你可以先修改源码。
tanqth 2020-08-13
  • 打赏
  • 举报
回复
引用 2 楼 lyq强 的回复:
[quote=引用 1 楼 tanqth 的回复:]应该不能通过消息的机制来来设置字体颜色与大小样式,因为好像是字体颜色与大小改变后,系统使用的消息的机制来改变显示,而直接作用的还是原本的Font。 这是系统源码里的代码:

procedure WMSetFont(var Message: TWMSetFont); message WM_SETFONT;

procedure TCustomRichEdit.WMSetFont(var Message: TWMSetFont);
begin
  FDefAttributes.Assign(Font);
end;
WMSetFont 是可以的,但是我使用过后,他将所有字的格式全部还原成默认格式了。 EM_SETCHARFORMAT这个我也试过了,但是会使写字板程序崩掉。 [/quote] “他将所有字的格式全部还原成默认格式了。” 这样就是不可以。可以的情况是,改变为你需要的格式。
  • 打赏
  • 举报
回复
引用 1 楼 tanqth 的回复:
应该不能通过消息的机制来来设置字体颜色与大小样式,因为好像是字体颜色与大小改变后,系统使用的消息的机制来改变显示,而直接作用的还是原本的Font。 这是系统源码里的代码:

procedure WMSetFont(var Message: TWMSetFont); message WM_SETFONT;

procedure TCustomRichEdit.WMSetFont(var Message: TWMSetFont);
begin
  FDefAttributes.Assign(Font);
end;
WMSetFont 是可以的,但是我使用过后,他将所有字的格式全部还原成默认格式了。 EM_SETCHARFORMAT这个我也试过了,但是会使写字板程序崩掉。
tanqth 2020-08-12
  • 打赏
  • 举报
回复
应该不能通过消息的机制来来设置字体颜色与大小样式,因为好像是字体颜色与大小改变后,系统使用的消息的机制来改变显示,而直接作用的还是原本的Font。 这是系统源码里的代码:

procedure WMSetFont(var Message: TWMSetFont); message WM_SETFONT;

procedure TCustomRichEdit.WMSetFont(var Message: TWMSetFont);
begin
  FDefAttributes.Assign(Font);
end;

1,183

社区成员

发帖
与我相关
我的任务
社区描述
Delphi Windows SDK/API
社区管理员
  • Windows SDK/API社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧