这样试试:
输入要显示的字串-->取第一屏字数-->显示一屏字
下一屏就是去掉上屏字数的字串继续上面的步骤。

程序代码:
oRichEdit = this.edit
hRichEdit = oRichEdit.hWnd
DECLARE long SendMessage IN user32 long,long,long,long
DECLARE long SendMessage IN user32 as SendMessage2 long,long,long,string@
DECLARE long SendMessage IN user32 as SendMessage3 long,long,string@,string@
DECLARE long SendMessageW IN user32 long,long,long,string@
DECLARE long GetClientRect IN user32 long,string@
#define WM_SETREDRAW 0x000B
#define EM_SETPARAFORMAT 0x0447 &&(WM_USER + 71)
#define ST_SELECTION 2
#define CP_UTF8 65001
#define EM_SETTEXTEX 0x0461
#define WM_SETTEXT 0x000C
#define EM_GETLINE 0x00C4
SendMessage(hRichEdit, WM_SETREDRAW, 0, 0) && LockScreen
oRichEdit.text = ""
**用户区高
rc = REPLICATE(0h00,16)
GetClientRect(hRichEdit, @rc)
nClientHeight = CTOBIN(RIGHT(rc,4),"4rs")
**行高
nLineHeight = FONTMETRIC(1,oRichEdit.font.name, MTON(oRichEdit.font.size)) + 5
&&设置行高
pf = BINTOC(188,"4RS") + BINTOC(256,"4RS") + REPLICATE(0h00,156);
+ BINTOC(nLineHeight*15,"4RS") + 0h0000 + BINTOC(4,"1RS") + REPLICATE(0h00,17)
SendMessage2(hRichEdit, EM_SETPARAFORMAT, 0, @pf)
**用户区行数
nClientLines = INT(nClientHeight / nLineHeight)
**填字串(UTF-8)
cText = REPLICATE("abc字字123",1000)
textUtf8 = STRCONV(cText,9)
stx = BINTOC(ST_SELECTION,"4rs") + BINTOC(CP_UTF8,"4rs")
SendMessage3(hRichEdit, EM_SETTEXTEX, stx, textUtf8)
oRichEdit.selstart = 0
**算计一屏
nSize = 2048 && 要足够大
cBuffer = BINTOC(nSize,"4rs") + REPLICATE(0h00,nSize)
i = 0
nWordCount = 0
nWordLine = SendMessageW(hRichEdit, EM_GETLINE, i, @cBuffer)
DO WHILE (nWordLine > 0) AND (i < nClientLines)
nWordCount = nWordCount + nWordLine
i = i+1
nWordLine = SendMessageW(hRichEdit, EM_GETLINE, i, @cBuffer)
ENDDO
**显示一屏
oRichEdit.text = ""
SendMessage3(hRichEdit, EM_SETTEXTEX, stx, STRCONV(LEFTC(cText,nWordCount),9))
oRichEdit.selstart = 0
SendMessage(hRichEdit, WM_SETREDRAW, 1, 0) && UnLockScreen
[此贴子已经被作者于2025-9-7 10:13编辑过]