BytePositionInfo GetStringBytePositionInfo(Point p)
{
long bytePos;
int byteCharacterPos;
float x = ((float)(p.X - _recStringView.X) / _charSize.Width);
float y = ((float)(p.Y - _recStringView.Y) / _charSize.Height);
int iX = (int)x;
int iY = (int)y;
int hPos = iX+1;
bytePos = Math.Min(_byteProvider.Length,
_startByte + (_iHexMaxHBytes * (iY+1) - _iHexMaxHBytes) + hPos - 1);
byteCharacterPos = 0;
if(bytePos < 0)
return new BytePositionInfo(0, 0);
return new BytePositionInfo(bytePos, byteCharacterPos);
}