2 add. functions for the textarea control(win32)

BlitzMax Forums/MaxGUI Module/2 add. functions for the textarea control(win32)

klepto2(Posted 2006) [#1]
Hi, I have currently started a new IDE for BMax.
The main target is the cross compatibility for all Versions.
To handle the enormous speed lag in every highlighting code (mainly on windows, but also on every other OS) I've done some
researching how to determine the first and last visible line of a textarea control.
As I only own a windows system I wasn't able to get these functions for Linux and Mac. Maybe some of our linux and mac cracks could find them out to have some (in my opinion very important functions) cross platform functions.

Here is the actual windows version:
Type TRect
	Field _Left:Int
	Field _Top:Int
	Field _Right:Int
	Field _Bottom:Int
End Type

Type TPoint
	Field X:Int
	Field Y:Int
End Type

Function TextAreaFirstVisibleLine(textarea:TGadget)
	Local hwnd=QueryGadget(textarea,QUERY_HWND)
	If hwnd Return SendMessageA(hwnd,EM_GETFIRSTVISIBLELINE,0,0)
End Function



Function GetLastVisibleLine:Int(Edit:TGadget)
	Local r:TRect
	Local i:Int
	
	Local hwnd=QueryGadget(Edit,QUERY_HWND)
	If hwnd 
		SendMessageA(hwnd,EM_GETRECT,0,Int(Byte Ptr r))
	Else
		Return Null
	EndIf
    Local pt:TPoint = New TPOINT
	pt.x = Long(r._right)
	pt.y = Long(r._bottom)
	i = SendMessageA(hwnd,EM_CHARFROMPOS,0,Int(Byte Ptr pt))
	
	Return i
End Function


Thx klepto2

PS: it is important that these functions are font independent.