如何在Memo中实现自动滚屏?(50分)

  • 主题发起人 主题发起人 sunway
  • 开始时间 开始时间
给memo1.handle post一个WM_VSCROLL或WM_HSCROLL 消息
具体参见win32.hlp目录中有关scroll bars
下例向下滚动一行:
postmessage(memo1.handle, WM_VSCROLL, 0, SB_LINEDOWN);
 
如果想自动: 可以定时发送WM_VSCROLL消息.
定时可用:
timeSetEvent(uDelay, uResolution: UINT;
lpFunction: TFNTimeCallBack; dwUser: DWORD; uFlags: UINT);

uDelay: 间隔时间(ms)
uResolution: 不知道(置0即可)
lpFunction: 定时响应子函数的入口地址(可用@函数名)
dwUser: 本例中可设置成integer(memo1)
uFlags: 0 响应一次
1 定时响应
返回值: 句柄(供释放时用, 0为失败)
例:
timeSetEvent(1000, 0,
@Timer, integer(memo1), 1);


调用timeKillEvent(句柄)释放.
定时子函数如下:
Timer(uID, uMsg, dwUser, dw1, dw2 : longint); stdcall;
begin
postmessage(TMemo(dwUser).Handle, WM_VSCROLL,0,SB_LINEDOWN);
end;

结果是每秒钟向下滚动一行.
 
另: TimeSetEvent, TimeKillEvent在MMSystem.pas中定义的.
因此需要在uses中加上, 实际上它是调用winmm.dll中的相应函数
 
Another_eYes 的答案应该可以接受吧。
即使不能接受,也只有一个人回答,况且也这么长时间了,只能这样了。 :)


-- by 3h, 1999-06-01
 
接受答案了.
 
后退
顶部