Собсно, как он сам по себе устроен понятно...Create-, ShowCaret, DraText...в общих чертах если...
А вот как в ем выделение текста сделано? Если однострочный, то тут еще более-менее - посчитать размер символов и все такое...а если многострочный, да еще разными шрифтами?