ignoreCharacter = false;
public Point getCaretLocation () {	checkWidget ();	/*	* Bug in Windows.  For some reason, Windows is unable	* to return the pixel coordinates of the last character	* in the widget.  The fix is to temporarily insert a	* space, query the coordinates and delete the space.	* The selection is always an i-beam in this case because	* this is the only time the start of the selection can	* be equal to the last character position in the widget.	* If EM_POSFROMCHAR fails for any other reason, return	* pixel coordinates (0,0). 	*/	int [] start = new int [1];	OS.SendMessage (handle, OS.EM_GETSEL, start, (int []) null);	int pos = OS.SendMessage (handle, OS.EM_POSFROMCHAR, start [0], 0);	if (pos == -1) {		pos = 0;		if (start [0] >= OS.GetWindowTextLength (handle)) {			int cp = getCodePage ();			OS.SendMessage (handle, OS.EM_REPLACESEL, 0, new TCHAR (cp, " ", true));			pos = OS.SendMessage (handle, OS.EM_POSFROMCHAR, start [0], 0);			OS.SendMessage (handle, OS.EM_SETSEL, start [0], start [0] + 1);			OS.SendMessage (handle, OS.EM_REPLACESEL, 0, new TCHAR (cp, "", true));		}	}	return new Point ((short) (pos & 0xFFFF), (short) (pos >> 16));}