GetCaretPosだと座標なので、EM_CHARFROMPOSを使って何行目か、とか、何番目の文字か、とか、そういう情報に変換する。
EM_CHARFROMPOS メッセージ (Winuser.h) - Win32 apps | Microsoft Learn
EM_CHARFROMPOS.rcで、
Item3-1を追加。
EM_CHARFROMPOS.cppで、
EM_CHARFROMPOSをSendMessageした時の戻り値のHIWORDは何行目かを示し、LOWORDはキャレットまでの総文字数を示す。

GとHの間にキャレットを置く。

これでItem3-1を選択。

0行目から数えたら1行目だし、改行コード含めるとキャレットまで9文字。