Для этого достаточно функций:
рисование прямоугольника
создание шрифта
вывод текста посимвольно
получение размера текста в пикселях
установка clip\scissor rectangle
текст хранится в wchar_t*
рисовать надо только видимые строки (соответственно каждый раз при изменении размера окна вычисляем количество строк).
Рисуем с определённого индекса, столько-то строк.
При прокрутке текста изменяем этот индекс.