如何在RichEdit上捕获OnScroll事件?

时间:2011-05-30 07:49:07

标签: windows delphi events message

我创建了一个自定义Rich,它有一个scrollPos事件。

所以我有这段代码:

procedure TCustomRich.WMVScroll(var Msg : TWMVScroll);
begin
  inherited;
  if (Msg.ScrollCode in [SB_THUMBTRACK, SB_THUMBPOSITION]) then
    FScrollY := Msg.Pos;
  if Assigned(OnScroll) then
    OnScroll(Self, FScrollX, FScrollY);
end;

procedure TCustomRich.WMHScroll(var Msg : TWMVScroll);
begin
  inherited;
  if (Msg.ScrollCode in [SB_THUMBTRACK, SB_THUMBPOSITION]) then
    FScrollX := Msg.Pos;
  if Assigned(OnScroll) then
    OnScroll(Self, FScrollX, FScrollY);
end;

但问题是它在使用键或鼠标滚轮滚动时不会触发。

1 个答案:

答案 0 :(得分:5)

在这方面,

TRichEdit可能是一个尴尬的客户。您需要结合WM_VSCROLL和WM_HSCROLL消息处理EN_VSCROLL和EN_HSCROLL通知消息。

我找到了一篇C ++ Builder文章,展示了所需内容:http://bcbjournal.com/bcbcaq/?loc=edits&caq=29