Declare INTEGER SendMessage in WIN32API as sendmessage_n INTEGER hwnd , INTEGER wMsg , INTEGER wParam , integer lParam
Declare INTEGER SendMessage in WIN32API as sendmessage_c2 INTEGER hwnd , INTEGER wMsg , INTEGER wParam , string lParam
#defi WM_SETREDRAW 0x0b
SendMessage_n(thisform.Olecontrol5.hwnd, WM_SETREDRAW, 0, 0) && Lock
#defi EM_REPLACESEL 0xC2
SendMessage_c2(thisform.Olecontrol5.hwnd, EM_REPLACESEL, 1, REPLICATE(CHR(254),2000)) &&填充新字符串,且可撤销
#defi EM_GETFIRSTVISIBLELINE 0XCE
#defi EM_LINEINDEX 0xbb
#defi EM_POSFROMCHAR 0xd6
iFirstLine = SendMessage_n(thisform.Olecontrol5.hwnd, EM_GETFIRSTVISIBLELINE,0,0)
FOR i=0 TO 100
cpFirst = SendMessage_n(thisform.Olecontrol5.hwnd,EM_LINEINDEX,iFirstLine+i,0)
aa=SendMessage_n(thisform.Olecontrol5.hwnd, EM_POSFROMCHAR,cpFirst,0)
aa=BITrSHIFT(aa,16)
IF i>0
IF aa=1
EXIT
endif
IF aa>thisform.Olecontrol5.Height
i=iif(aa>thisform.Olecontrol5.Height+5,i-1,i) &&判断上一行是否完整显示,这个5是预估值,也可以用获取的行间距
EXIT
endif
ENDIF
next
#defi EM_LINELENGTH 0xC1
MESSAGEBOX( SendMessage_n(thisform.Olecontrol5.hwnd, EM_LINELENGTH, 0,0))
MESSAGEBOX(i)
#defi EM_UNDO 0xc7
SendMessage_n(thisform.Olecontrol5.hwnd, EM_UNDO, 0, 0) &&撤销填充
SendMessage_n(thisform.Olecontrol5.hwnd, WM_SETREDRAW, 1, 0) && UnLock
通过这个话题的讨论,学到很多新东西
Declare INTEGER SendMessage in WIN32API as sendmessage_c2 INTEGER hwnd , INTEGER wMsg , INTEGER wParam , string lParam
#defi WM_SETREDRAW 0x0b
SendMessage_n(thisform.Olecontrol5.hwnd, WM_SETREDRAW, 0, 0) && Lock
#defi EM_REPLACESEL 0xC2
SendMessage_c2(thisform.Olecontrol5.hwnd, EM_REPLACESEL, 1, REPLICATE(CHR(254),2000)) &&填充新字符串,且可撤销
#defi EM_GETFIRSTVISIBLELINE 0XCE
#defi EM_LINEINDEX 0xbb
#defi EM_POSFROMCHAR 0xd6
iFirstLine = SendMessage_n(thisform.Olecontrol5.hwnd, EM_GETFIRSTVISIBLELINE,0,0)
FOR i=0 TO 100
cpFirst = SendMessage_n(thisform.Olecontrol5.hwnd,EM_LINEINDEX,iFirstLine+i,0)
aa=SendMessage_n(thisform.Olecontrol5.hwnd, EM_POSFROMCHAR,cpFirst,0)
aa=BITrSHIFT(aa,16)
IF i>0
IF aa=1
EXIT
endif
IF aa>thisform.Olecontrol5.Height
i=iif(aa>thisform.Olecontrol5.Height+5,i-1,i) &&判断上一行是否完整显示,这个5是预估值,也可以用获取的行间距
EXIT
endif
ENDIF
next
#defi EM_LINELENGTH 0xC1
MESSAGEBOX( SendMessage_n(thisform.Olecontrol5.hwnd, EM_LINELENGTH, 0,0))
MESSAGEBOX(i)
#defi EM_UNDO 0xc7
SendMessage_n(thisform.Olecontrol5.hwnd, EM_UNDO, 0, 0) &&撤销填充
SendMessage_n(thisform.Olecontrol5.hwnd, WM_SETREDRAW, 1, 0) && UnLock
通过这个话题的讨论,学到很多新东西