Here's a question: >Is the EM_CHARFROMPOS message documented correctly for Win32? Document Q137805 >says the calling sequence is > > wParam = 0; // not used > lParam = (LPARAM)&pPoint; // address of a POINT structure > Here's the answer: The document is from 1995. The online help on Win32 and CE says this: EM_CHARFROMPOS wParam = 0; lParam = MAKELPARAM(x, y) An application sends an EM_CHARFROMPOS message to retrieve the zero-based character index and zero-based line index of the character nearest the specified point in an edit control. Parameters x Value of the low-order word of lParam. Specifies the x-coordinate of a point in the edit control's client area. The coordinate is relative to the upper-left corner of the client area. y Value of the high-order word of lParam. Specifies the y-coordinate of a point in the edit control's client area. The coordinate is relative to the upper-left corner of the client area. Return Value The return value specifies the character index in the low-order word and the line index in the high-order word. For single-line edit controls, the line index is always 0. The return value is the last character in the edit control if the given point is beyond the last character in the control. The return value is -1 if the specified point is outside the client area of the edit control.