Translating Mouse Hit X Offset to Caret Position

Conventionally, the user can select caret position (cp) by clicking either the trailing half of character "cp-1" or the leading half of character "cp". An application can implement the translation of mouse hit x offset to caret position as follows:

int iCharPos;
int iCaretPos;
int fTrailing;
ScriptXtoCP(iMouseX, cChars, cGlyphs, pwLogClust, psva, piAdvance, psa,
            &iCharPos, &fTrailing);
iCaretPos = iCharPos + fTrailing;

For scripts that snap the caret to cluster boundaries, a call to ScriptXtoCP returns with fTrailing set to either 0 or the width of the cluster in code points.

Using Uniscribe